It’s Saturday today, what day is it after 11 + 22 + 33 + … + NN days?
Input
There are multiple test cases. The first line of input contains an integer T indicating the number of test cases. For each test case:
There is only one line containing one integer N (1 <= N <= 1000000000).
Output
For each test case, output one string indicating the day of week.
Sample Input
2
1
2
Sample Output
Sunday
Thursday
Hint
A week consists of Sunday, Monday, Tuesday, Wednesday, Thursday, Friday and Saturday.
题目大意
今天是星期六。过了1^1+2^2 +…+n^n天,输入n,输出是星期几
解题思路
找规律,先打表,然后搜索前几个,发现294是一个循环节!
代码
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 300;
int f[maxn];
char week[7][20] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday","Saturday"};
int main()
{
int tmp = 6;
for(int i = 1 ; i < 295 ; i ++) {
f[i-1] = tmp;
int tt = 1;
for(int j = 1 ; j <= i ; j ++) {
tt = (tt*i)%7;
}
tmp = (tmp+tt)%7;
}
int t;
scanf("%d",&t);
while(t--) {
int n;
scanf("%d",&n);
n = n%294;
printf("%s\n",week[f[n]]);
}
return 0;
}