水题:
http://acm.hdu.edu.cn/showproblem.php?pid=4143
#include<stdio.h>
#include<math.h>
int main() {
int T;
scanf("%d", &T);
while(T--) {
int n;
scanf("%d", &n);
int flag = 0;
for(int i = sqrt(n)+1; i>0; i--) {
//要求是positive(正数),所以不能让i正好是n的平方根
//这样的话,x就等于0了
if((n!=i*i) && (n%i==0) && (n/i - i>0) && (n/i - i)%2 == 0)
{printf("%d\n", (n/i - i)/2);
flag= 1;
break;
}
}
if(!flag) {printf("-1\n");}
}
return 0;
}
主要就是那个判断条件,想明白就好了
我们需要对原来的等式再稍微做一下转换: