水题
题目描述
给定一个正整数 n,求一个最小的正整数 x,使得可以找到一个正整数y,且满足 y*y = n + x*x。
输入
输入包含多组测试数据。
每组数据只有一行为 1 个整数 n(0 < n < 10^9)。
输出
对于每组测试数据,按照题目描述输出对应的结果,如果找不到这样的正整数 x ,则输出 -1。
示例输入
2 3
示例输出
-1 1
提示
1 #include<iostream> 2 #include<cmath> 3 using namespace std ; 4 int main() 5 { 6 int n, i ; 7 while(cin>>n) 8 { 9 for(i=int(sqrt(n)); i>0; i--) 10 { 11 if(n%i==0&&(n/i-i)%2==0&&n/i!=i) break ; 12 } 13 if(i==0) cout<<"-1"<<endl ; 14 else cout<<(n/i-i)/2<<endl; 15 } 16 return 0 ; 17 18 }