题目链接
个人思路
已知今天是星期六,请问
2
20
2^{20}
220 天后是星期几?
注意用数字 1 到 7 表示星期一到星期日。
这个问题很简单,无论当前周几,只要计算出这个天数对 7 取模。比如是10天后,那么就是在一周之后多三天,此时如果是想知道 10 天后的是星期几,无需考虑那一周,只需要在当前日期往后挪三天。此处需要注意一个特例,当前是周六,那么它的一天之后应该是周日,此时对 7 取模的结果为 0,需要对这个情况特判。
参考代码
Java
此处不涉及什么Java和C++的语法区别,就不加上C++代码了
public class Main {
static long ksm(long a, long b, long mod) {
long res = 1;
while (b > 0) {
if ((b & 1) == 1) {
res = res * a % mod;
}
b = b >> 1;
a = a * a % mod;
}
return res;
}
public static void main(String[] args) {
long day = ksm(20, 22, 7);
day = (6 + day) % 7;
if (day == 0) day = 7;
System.out.println(day);
}
}