1 条题解
-
0
自动搬运
来自洛谷,原作者为

残阳如血
人事已尽,天命难违搬运于
2025-08-24 22:59:13,当前版本为作者最后更新于2024-07-24 18:08:17,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
诈骗题。
非常重要的是,本题的
press是递归定义的,与平常所做的完全平方数类型的开关灯题不同。
考虑 的所有除自身以外的因数 ,参考
press函数,容易发现对于每次对 的修改后,必然会修改 。令 表示 被修改的次数,可以发现,
$$\text{cnt}_i=\sum\limits_{\mathclap{d\mid i\operatorname{and}d\not=i}}{\text{cnt}_d}+1 $$特别地,这个加 是因为遍历到 时,对此的修改。
容易发现,当 为奇数时,灯开;反之,灯灭。
-
当 时,显然 ,灯开。
-
当 时,,灯灭。
-
当 为合数时,使用数学归纳法:
命题
当 为合数时, 为偶数。
证明
显然,$\text{cnt}_4=\text{cnt}_{1}+\text{cnt}_{2}+1=1+2+1=4$。
假设当前已经处理到了合数 ,则 为偶数。
考虑 的下一个合数 ,由于 范围内的数都是质数,所以 $\text{cnt}_{t+1}=\text{cnt}_{t+2}=\cdots=\text{cnt}_{p-1}=2$。
对于 的不等于 并且不等于 的因数 ,易知 为偶数,那么其和也是偶数。
那么 $\text{cnt}_p=\text{cnt}_1+\sum\text{cnt}_{r_i}+1=1+\text{偶数}+1=\text{偶数}$。
故得证。
综上所述,灯开着当且仅当 的情况。
#include <bits/stdc++.h> int main() { int T, n, k; for (std::cin >> T; T; --T) { std::cin >> n >> k; if (k ^ 1) puts("NO"); // k != 1 else puts("YES"); // k == 1 } return 0; } -
- 1
信息
- ID
- 10317
- 时间
- 1000ms
- 内存
- 1024MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者