谁能解一下
02:CSP-J2022-2解密
查看提交统计提问
总时间限制: 20000ms 单个测试点时间限制: 1000ms 内存限制: 262144kB
描述
给定一个正整数 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。
样例输入
10
770 77 5
633 1 211
545 1 499
683 3 227
858 3 257
723 37 13
572 26 11
867 17 17
829 3 263
528 4 109
样例输出
2 385
NO
NO
NO
11 78
3 241
2 286
NO
NO
6 88
我的代码:
#include<bits/stdc++.h>
using namespace std;
int k;
int main()
{
cin>>k;
for(int i=1;i<=k;i++)
{
long long n,d,e;
cin>>n>>d>>e;
long long s=n-d*e+2;
long long r=(n-d*e+2)/2,l=1;
while(l<r)
{
int mid=(l+r)/2;
if(mid*(s-mid)>=n)
{
r=mid;
}
else
{
l=mid+1;
}
}
if(l*(s-l)==n)
{
cout<<l<<(l-1) ;
}
else
{
cout<<"no";
}
}
return 0;
}
结果为wrong answer;