70分求助
查看原帖
70分求助
770640
Elaina_楼主2022/11/1 15:38
#include<bits/stdc++.h>
using namespace std;

int k;

int main(){
    scanf("%d",&k);
    while(k--){
        long long n,d,e;
        scanf("%lld%lld%lld",&n,&d,&e);
        long long check=pow(e*d-n-2,2)-4*1*n;
        if(check<0){
          printf("NO\n");
          continue;
        }
        long double xx1=(-1*(e*d-n-2)+sqrt(pow((e*d-n-2),2)-4*1*n))/2*1;
        long double xx2=(-1*(e*d-n-2)-sqrt(pow((e*d-n-2),2)-4*1*n))/2*1;
        long long x1=(-1*(e*d-n-2)+sqrt(pow((e*d-n-2),2)-4*1*n))/2*1;
        long long x2=(-1*(e*d-n-2)-sqrt(pow((e*d-n-2),2)-4*1*n))/2*1;
        if(xx1-x1!=0||xx2-x2!=0){
          printf("NO\n");
          continue;
        }
        if(x1<=0||x2<=0){
          printf("NO\n");
          continue;
        }
        if(x1*x2!=n){
          printf("NO\n");
          continue;
        }
        if((x1-1)*(x2-1)+1!=e*d){
          printf("NO\n");
          continue;
        }
        if(x1>x2)
          swap(x1,x2);
        printf("%lld %lld\n",x1,x2);
    }
    return 0;
}

2022/11/1 15:38
加载中...