题目描述
假设今天是星期日,那么过 a 的 b 次方天之后是星期几?
输入格式
两个正整数 a,b,中间用单个空格隔开。0<a≤100,0<b≤10000
输出格式
一个字符串,代表过 a的 b 次方天之后是星期几。
其中,Monday 是星期一,Tuesday 是星期二,Wednesday 是星期三,Thursday 是星期四,Friday 是星期五,Saturday 是星期六,Sunday 是星期日。
输入输出样例
输入 #1
3 2000
输出 #1
Tuesday
思路
这题肯定不能硬算 aa 的 bb 次方,所以我们要用到一个东西:
如果 a ≡ b mod c ,则 a × b mod c=( (a mod c) × ( b mod c) )mod c
copy
#include<stdio.h>
#include<iostream>
using namespace std;
int main(){
int a,b;
cin >> a >> b;
a = a%7;
int n = 1;
for(int i=1;i<=b;i++){
n*=a;
n%=7;//每次乘完就模,这样不会爆炸
}
switch(n)
{
case 0:
cout<<"Sunday"<<endl;
break;
case 1:
cout<<"Monday"<<endl;
break;
case 2:
cout<<"Tuesday"<<endl;
break;
case 3:
cout<<"Wednesday"<<endl;
break;
case 4:
cout<<"Thursday"<<endl;
break;
case 5:
cout<<"Friday"<<endl;
break;
case 6:
cout<<"Saturday"<<endl;
break;
}
return 0;
}