下界传送门
代码:
#include <bits/stdc++.h>
using namespace std;
bool ok(long long x){
long long d = sqrt((long double)x + 0.5);
if(d * d == x){
return true;
}
return false;
}
int main(){
int k;
cin >> k;
while(k--){
long long n, d, e;
cin >> n >> d >> e;
long long m = n - d * e + 2;
long long t = m * m - 4 * n;
if(t < 0 || !ok(k)){
puts("NO");
continue;
}
bool flag = false;
long long now = sqrt((long double)t), p, q;
if((m + now) % 2 == 0){
q = (m + now) / 2;
if(n % q == 0){
p = n / q;
flag = true;
}
}else if(m - now > 0 && (m - now) % 2 == 0){
q = (m - now) / 2;
if(n % q == 0){
p = n / q;
flag = true;
}
}
if(!flag){
puts("NO");
continue;
}else{
if(p > q){
swap(p, q);
//cout << p << " " << q << endl;
}
cout << p << " " << q << endl;
}
}
return 0;
}
到底是哪里出问题了?我写错哪了?(疑问)我太蒻了(T_T),各位大佬教教我,多谢