http://47.96.116.66/problem.php?cid=3252&pid=6
x^2 - n*y^2 = 1
可化为 x^2 = n*y^2 + 1
,然后可以忽略x
,用(sqrt(1+n*y*y)) * (sqrt(1+n*y*y)) = 1+n*y*y
来判断1+n*y*y
是否是平方数即可。
#include<iostream>
#include<cmath>
#define LL long long
using namespace std;
int main(){
int t;cin>>t;
while(t--){
int n;cin>>n;
bool flag=true;
for(LL y=1;y<=10000;y++){
if( (int)(sqrt(1+n*y*y))*(int)(sqrt(1+n*y*y))==1+n*y*y ){
flag=false;
cout<<y<<endl;
break;
}
}
if(flag)cout<<"No"<<endl;
}
return 0;
}