从民间到官方
查看原帖
从民间到官方
186045
itisover楼主2022/11/8 19:02

为什么不判正数都能过?

#include<bits/stdc++.h>
using namespace std;
using i64=long long;
void solve(){
    i64 n,e,d,m,a; cin>>n>>e>>d;
    m=n-(__int128)1*e*d+2;
    a=m*m-4*n;
    if(floor(sqrtl(a))*floor(sqrtl(a))!=a) cout<<"NO\n";
    else{
        a=sqrtl(a);
        if((a+m)%2||(m-a)%2) cout<<"NO\n";
        else{
            cout<<(m-a)/2<<' '<<(a+m)/2<<'\n';
        }
    }
}
int main(){
    int t; cin>>t;
    while(t--) solve();
    return 0;
}
2022/11/8 19:02
加载中...