好简单啊
2026-07-06 10:01:31
发布于:广东
5阅读
0回复
0点赞
真的吗
#include<bits/stdc++.h>
using namespace std;
__int128 sqrt128(__int128 x) {
if (x < 0) return -1;
if (x == 0 || x == 1) return x;
__int128 l = 1, r = x;
__int128 ans = 0;
while (l <= r) {
__int128 mid = l + (r - l) / 2;
if (mid <= x / mid) {
ans = mid;
l = mid + 1;
} else r = mid - 1;
}
return ans;
}
int main(){
long long k;
cin >> k;
for(int i = 0 ; i < k ; i++){
unsigned long long n,d,e;
cin >> n >> d >> e;
unsigned long long s = n - (e*d) + 2;
unsigned long long p = (s+sqrt128(__int128(s*s)-__int128(4*n)))/2 , q = (s-sqrt128(__int128(s*s)-__int128(4*n)))/2;
if(!(p*q == n && (p-1)*(q-1)+1 == d*e)) cout << "NO\n";
else cout << min(p,q) << ' ' << max(p,q) << '\n';
}
}
这里空空如也






有帮助,赞一个