先部分分,再进阶
先认清任务,再讨论算法
2022 CSP-J 第二轮 T2|解密
一、完整题目
题目名称:P8814 [CSP-J 2022] 解密(decode)
源程序文件:
输入文件:
时间限制:1 秒 内存限制:512 MiB
测试点:10 个等分点,每点 10 分
源程序文件:
decode.cpp输入文件:
decode.in 输出文件:decode.out时间限制:1 秒 内存限制:512 MiB
测试点:10 个等分点,每点 10 分
题目描述
给定正整数 k,有 k 组数据。对于每组数据,给定正整数 n,d,e,请寻找正整数 p,q,使得:
n = p × q
d × e = (p − 1)(q − 1) + 1
其中要求 p≤q。如果存在满足条件的 p,q,输出它们;否则输出 NO。
输入格式
从文件 decode.in 中读入数据。
第一行包含一个正整数 k,表示数据组数。
接下来 k 行,每行包含三个正整数 n,d,e,描述一组数据。
输出格式
输出到文件 decode.out 中。
对每组数据输出一行。若存在满足条件的正整数 p,q,按 p≤q 输出 p q;否则输出 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
数据范围与测试点
所有数据保证 1≤k≤10^5,1≤n≤10^18,1≤d×e≤10^18,并且令 m=n−d×e+2 时有 1≤m≤10^9。
| 测试点 | k |
n |
m |
其他性质 |
|---|---|---|---|---|
| 1 | ≤10^3 |
≤10^3 |
≤10^3 |
保证有解 |
| 2 | ≤10^3 |
≤10^3 |
≤10^3 |
无特殊性质 |
| 3 | ≤10^3 |
≤10^9 |
≤6×10^4 |
保证有解 |
| 4 | ≤10^3 |
≤10^9 |
≤6×10^4 |
无特殊性质 |
| 5 | ≤10^3 |
≤10^9 |
≤10^9 |
保证有解 |
| 6 | ≤10^3 |
≤10^9 |
≤10^9 |
无特殊性质 |
| 7 | ≤10^5 |
≤10^18 |
≤10^9 |
若有解,则 p=q |
| 8 | ≤10^5 |
≤10^18 |
≤10^9 |
保证有解 |
| 9~10 | ≤10^5 |
≤10^18 |
≤10^9 |
无特殊性质 |
按测试点取并集,不把重叠分数相加
勾选已掌握的路线,观察它们共同覆盖哪些测试点。这里计算的是该卷条件下的理论覆盖分,不代表程序已经通过正式评测,也不对应任何一等奖分数线。
已掌握的解法
去重后覆盖0 / 100
实际提交时,须将已掌握的分支整合到同一份程序。勾选路线不会自动拼接代码。
测试点覆盖图
已覆盖未覆盖
查看原题评分依据
逐条看懂:性质、推导与完整代码
选择一条路线,查看它为什么成立,再进入同一算法的可视化与代码追踪。
选择得分路线
算法过程执行语句与图示同步
当前变量金色表示与上一步相比发生变化
已输出
尚未输出
0 / 0
键盘 ← → 单步,空格播放 / 暂停
执行记录(最近 8 步)
用边界检查:我真的读懂了吗?
先手算,再展开解释。带入演示时会核对当前路线的适用条件。