水题

题目描述

给定一个正整数 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 }

 

posted @ 2013-01-19 20:59  yelan@yelan  阅读(162)  评论(0编辑  收藏  举报