HDU:http://acm.hdu.edu.cn/showproblem.php?pid=6441

 1.首先百度百科了解一下费马大定理

2.所以,我们便可分为几种情况:

(1)n>2,无解,输出-1,-1;

(2)n=2:则有a^2+b^2=c^2,给出a,则凑勾股数即可。

(3)n=1:则有a+b=c,因为b>=1,就取b=1,c=a+1;

(4)n=0:无解,输出-1,-1;

3.我们特别讨论一下n=2的情况,凑勾股数:

   给定a的值,由a^2+b^2=c^2求出b和c。

   

---------------------------------------------------------------------------------------------------------------------------

完整代码:

#include <iostream>
#include <set>
using namespace std;


int main(){
	int t;
	cin>>t;
	while(t--){
		int n,a;
		cin>>n>>a;
		if(n==0 || n>2){
			cout<<-1<<" "<<-1<<endl;
		}else if(n==1){
			cout<<1<<" "<<a+1<<endl;
		}else if(n==2){
			if(a%2==0){
				int x=a/2;
				cout<<x*x-1<<" "<<x*x+1<<endl;
			}else {
				int x=(a-1)/2;
				cout<<2*x*x+2*x<<2*x*x+2*x+1<<endl;//注意计算尽量这样构造
			}
		}
	}
	
} 

END:AC...