Problem Description people in USSS love math very much, and there is a famous math problem .
give you two integers n ,a ,you are required to find 2 integers b ,c such that an +bn=cn . Input one line contains one integer T ;(1≤T≤1000000)
next T lines contains two integers n ,a ;(0≤n≤1000 ,000 ,000,3≤a≤40000) Output print two integers b ,c if b ,c exits;(1≤b,c≤1000 ,000 ,000) ;
else print two integers -1 -1 instead. Sample Input 1 2 3 Sample Output 4 5 费马大定理在加上勾股数的一些规律: 费马大定理: a^n+b^n=c^n在n>2时是不成立的。 勾股数规律: https://wenku.baidu.com/view/8282f1b669eae009591bec85.html #include <iostream> using namespace std; int main() { int T; scanf("%d",&T); int n,a,b,c; while(T--) { scanf("%d %d",&n,&a); if(n>2||n==0) { printf("-1 -1\n"); continue; } else if(n==1) { printf("%d %d\n",1,a+1); continue; } else { if(a%2==0) //a为偶数的时候 { int temp=(a-2)/2; printf("%d %d\n",temp*temp+2*temp,temp*temp+2*temp+2); continue; } else { int temp=(a-1)/2; printf("%d %d\n",2*temp*temp+2*temp,2*temp*temp+2*temp+1); continue; } } } return 0; } |