A Simple Problem,题解

题目:

分析:

  看到式子,推一推其实就是(y+x)*(y-x)=n,显然可以根号n的枚举,判断一下合不合法直接出结果,然后就是代码。注意x!=0.

#include <cstdio>
#include <string>
using namespace std;
int main(){
    int t;
    scanf("%d",&t);
    for(int i=1;i<=t;i++){
        int n;
        scanf("%d",&n);
        int ans=1e9;
        for(int i=1;i*i<n;i++){
            if(n%i||(i+n/i)%2)
                continue;
            ans=min(ans,(n/i-i)/2);
        }
        printf("%d\n",ans>=1e9-1?-1:ans);
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/wish-all-ac/p/12952562.html