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)(1≤T≤106,0≤a≤109,3≤a≤40000)
Output
如果有解则输出b,c(1≤b,c≤109)b,c(1\le b,c\le 10^9)b,c(1≤b,c≤109),否则输出−1 −1-1\ -1−1 −1
Sample Input
1
2 3
Sample Output
1
2 3
Solution
n≥3n\ge 3n≥3时,由费马大定理可知无解
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)⋅(c−b)知c+b,c−bc+b,c-bc+b,c−b为a2a^2a2的两个因子且显然两者奇偶性相同
若aaa为奇数,那么取c+b=a,c−b=1c+b=a,c-b=1c+b=a,c−b=1也即c=a+12,b=a−12c=\frac{a+1}{2},b=\frac{a-1}{2}c=2a+1,b=2a−1即可;
若aaa为偶数,那么取c+b=a22,c−b=2c+b=\frac{a^2}{2},c-b=2c+b=2a2,c−b=2也即c=a24+1,b=a24−1c=\frac{a^2}{4}+1,b=\frac{a^2}{4}-1c=4a2+1,b=4a2−1即可,注意到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;
}