2022csp普及组真题:解密(decode)
2022csp普及组真题:解密(decode)
题目
【题目描述】
给定一个正整数 k,有 k 次询问,每次给定三个正整数 ni , ei , di,求两个正整数 pi , qi, 使 ni = pi × qi , ei × di = (pi − 1)(qi − 1) + 1。
【输入格式】
从文件 decode.in 中读入数据。
第一行一个正整数 k,表示有 k 次询问。
接下来 k 行,第 i 行三个正整数 ni , di , ei。
【输出格式】
输出到文件 decode.out 中。
输出 k 行,每行两个正整数 pi , qi 表示答案。
为使输出统一,你应当保证 pi ≤ qi。
如果无解,请输出 NO。
【样例 1 输入】
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
【样例 1 输出】
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() { //freopen("decode.in","r",stdin); //freopen("decode.out","w",stdout); scanf("%d",&k); for(int i=1;i<=k;i++) { long long n,d,e; scanf("%lld %lld %lld",&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) { printf("%lld %lld\n",l,(s-l)); } else { printf("NO\n"); } } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)