水题
Description
给定一个正整数 n,求一个最小的正整数 x,使得可以找到一个正整数y,且满足 y*y = n + x*x。
Input
输入包含多组测试数据。
每组数据只有一行为 1 个整数 n(0 < n < 10^9)。
Output
对于每组测试数据,按照题目描述输出对应的结果,如果找不到这样的正整数 x ,则输出 -1。
Sample
Input
2 3
Output
-1 1
Hint
这个题说是水题,感觉也不好想,可能是小瑞太菜了!!
代码:
import java.util.*;
//Full of love and hope for life
//https://paste.ubuntu.com/
//https://www.cnblogs.com/zzrturist/
//bokeyuan
//https://blog.csdn.net/qq_44134712
//csdn
public class Main {
public static void main(String[] args) {
try (Scanner in = new Scanner(System.in)) {
while(in.hasNextInt()) {
int n=in.nextInt();
int i;
for(i=(int)Math.sqrt(n);i>0;i--) {
if(n%i==0&&(n/i-i)%2==0&&n/i!=i) {
break;
}
}
if(i==0) {
System.out.println(-1);
}
else {
System.out.println((n/i-i)/2);
}
}
}
}
}