水题:

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就等于0if((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;
}

主要就是那个判断条件,想明白就好了
我们需要对原来的等式再稍微做一下转换:
HDU 4143   A Simple Problem_经验分享