题目描述
给定一个正整数 k,有 k 次询问,每次给定三个正整数 ni , ei , di,求两个正整数 pi , qi,使 ni = pi × qi , ei × di = (pi − 1)(qi − 1) + 1。
输入
第一行一个正整数 k,表示有 k 次询问。
接下来 k 行,第 i 行三个正整数 ni , di , ei。
输出
输出 k 行,每行两个正整数 pi , qi 表示答案。
为使输出统一,你应当保证 pi ≤ qi。
如果无解,请输出 NO。
代码
#include <bits/stdc++.h>
using namespace std;
long long n,d,e,k;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cin>>k;
for(long long i=0;i<k;++i){
bool bl=0;
cin>>n>>e>>d;
long long m=n-e*d+2,q=m*m-4*n;
if(q>=0){
long long p=sqrt(q);
if(p*p==q&&(m-p)%2==0){
cout<<(m-p)/2<<" "<<(m+p)/2<<endl;
bl=1;
}
}
if(!bl)cout<<"NO"<<endl;
}
return 0;
}
&spm=1001.2101.3001.5002&articleId=132368230&d=1&t=3&u=9dd5544603c147fc8f4eaf8130cf329e)
2870

被折叠的 条评论
为什么被折叠?



