HDU 6441 Find Integer(数论)

本文介绍了一种针对特定方程组的解题算法,重点讨论了当n等于1和2时如何求解a^n+b^n=c^n的问题。对于n=1的情况,提供了一个简单的解决方案;对于n=2的情况,根据a的奇偶性给出了不同的解法。文章还附带了C++代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Description

给出n,an,an,a,求一组b,cb,cb,c使得an+bn=cna^n+b^n=c^nan+bn=cn

Input

第一行一整数TTT表示用例组数,每组用例输入两个整数n,an,an,a

(1≤T≤106,0≤a≤109,3≤a≤40000)(1\le T\le 10^6,0\le a\le 10^9,3\le a\le 40000)(1T106,0a109,3a40000)

Output

如果有解则输出b,c(1≤b,c≤109)b,c(1\le b,c\le 10^9)b,c(1b,c109),否则输出−1 −1-1\ -11 1

Sample Input

1
2 3

Sample Output

1
2 3

Solution

n≥3n\ge 3n3时,由费马大定理可知无解

n=0n=0n=0时也显然无解

n=1n=1n=1时,取b=1,c=a+1b=1,c=a+1b=1,c=a+1即可

n=2n=2n=2时,由a2=(c+b)⋅(c−b)a^2=(c+b)\cdot (c-b)a2=(c+b)(cb)c+b,c−bc+b,c-bc+b,cba2a^2a2的两个因子且显然两者奇偶性相同

​ 若aaa为奇数,那么取c+b=a,c−b=1c+b=a,c-b=1c+b=a,cb=1也即c=a+12,b=a−12c=\frac{a+1}{2},b=\frac{a-1}{2}c=2a+1,b=2a1即可;

​ 若aaa为偶数,那么取c+b=a22,c−b=2c+b=\frac{a^2}{2},c-b=2c+b=2a2,cb=2也即c=a24+1,b=a24−1c=\frac{a^2}{4}+1,b=\frac{a^2}{4}-1c=4a2+1,b=4a21即可,注意到a=2a=2a=2时无解

Code

#include<cstdio>
using namespace std;
int T,n,a,b,c;
int main()
{
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d%d",&n,&a);
		if(n==1)printf("%d %d\n",1,a+1);
		else if(n==2)
		{
			if(a&1)printf("%d %d\n",(a*a-1)/2,(a*a+1)/2);
			else 
			{
				if(a==2)printf("-1 -1\n");
				else printf("%d %d\n",a*a/4-1,a*a/4+1);
			}
		}
		else printf("-1 -1\n");
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值