/ Vijos / 讨论 / C++ /

最大公约数

#include<bits/stdc++.h>
using namespace std;
long long d,s;
long long ans,k;
signed main(){
    cin>>d>>s;
    if(s%(d*d)!=0){
        cout<<"-1";
        exit(0);
    }
    k=s/(d*d),ans=-1;
    for(long long m=1;m<=sqrt(k);m++){
        if(k%m!=0) continue;
        long long n=k/m;
        if((n+m)%2==0&&(n-m)%2==0){
            long long a=(n+m)/2,b=(n-m)/2;
            if(__gcd(a,b)==1){
                ans=max(ans,d*a);
            }
        }
    }
    cout<<ans;
    return 0;
}

0 条评论

目前还没有评论...