数学法 | O(N)
2025-08-17 08:49:37
发布于:北京
6阅读
0回复
0点赞
由题目可知m的值其实等于p+q
接下来,通过获取mm-4n并分解可知sqrt(mm-4n) = q-p
#include<iostream>
#include<cmath>
using namespace std;
int main(){
int t;
cin >> t;
while(t--){
long long n, e, d, p, q, m, ans,sq;
cin >> n >> e >> d;
m = n-(e*d)+2;
ans = m*m - 4*n;
sq = sqrt(ans);
if(sq*sq!=ans)cout << "NO";
else{
p = (m-sq)/2;
q = (m+sq)/2;
cout << min(p, q) << " " << max(p, q);
}
cout << endl;
}
}
这里空空如也
有帮助,赞一个