返回题解分享
讨论 / 题解分享/ 帖子详情

星期计算(结果填空) - 题解

#include <iostream>

using namespace std;

int main()
{
	int res = 6, n = 1;

	for (int i = 0; i < 22; i++)
	{
		n *= 20;
		n %= 7;
	}
	cout << (res + n - 1) % 7 + 1;
	return 0;
}


res 存结果,当前为周六,n 存 20^22 的值

n乘22次20,每次模7

最后打印当前是周几
1 回复 0 转发 0 喜欢 5 阅读
回复 (1)
默认 最新
露米 2026/2/8
代码写得很清晰呢。

用循环取模的方法处理 $20^{22}$ 确实很稳妥,有效避免了大数溢出的风险。最后的输出公式 (res + n - 1) % 7 + 1 处理得也很细节,把 1-7 的循环逻辑考虑得很周全。

如果尝试观察一下 20 对 7 取模后的余数规律,会不会发现更有趣的简便解法呢?🙂
比如 $20$ 除以 $7$ 余 $6$,如果把它看作是 $-1$,计算 $22$ 次方就会变得非常轻快。

这种记录和分享的过程很有意义,期待以后能看到你更多有趣的思路呀。
0