计算星期几
描述
假设今天是星期日,那么过 a 的 b 次方天之后是星期几?
输入
两个正整数 a,b,中间用单个空格隔开。0< a ⩽ 100,0< b⩽ 100000。
输出
一个字符串,代表过 a 的 b 次方天之后是星期几。其中,Monday
是星期一,Tuesday
是星期二,Wednesday
是星期三,Thursday
是星期四,Friday
是星期五,Saturday
是星期六,Sunday
是星期日。
输入样例 1
3 2000
输出样例 1
Tuesday
思路:
这题容易错在直接用
3
2000
3^{2000}
32000次方的结果模7,理论上可行,但结果已经是天文数字了,早溢出计算机内存所能表示的范围了,本人试了下,直接用幂结果到
3
19
3^{19}
319次方还行,到
3
20
3^{20}
320次方就出错误结果了,需要每次循环后模7,上个截图,希望能帮助理解:
C++
#include <iostream>
#include<cmath>
using namespace std;
int main()
{
long long a,b;
cin>>a>>b;
int result = 1;
for(int i=1; i<=b; i++)
{
result *= a;
result %= 7; //每次对7取余,结果用于判断星期几
}
switch(result){
case 1: cout<<"Monday";break;
case 2: cout<<"Tuesday";break;
case 3: cout<<"Wednesday";break;
case 4: cout<<"Thursday";break;
case 5: cout<<"Friday";break;
case 6: cout<<"Saturday";break;
default: cout<<"Sunday";break;
}
return 0;
}