It's Saturday today, what day is it after 11 + 22 + 33 + ... + NN days?
There are multiple test cases. The first line of input contains an integer Tindicating the number of test cases. For each test case:
There is only one line containing one integer N (1 <= N <= 1000000000).
For each test case, output one string indicating the day of week.
2 1 2
Sunday Thursday
A week consists of Sunday, Monday, Tuesday, Wednesday, Thursday, Friday and Saturday.
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3785
这个题以前做过,问你1^1+2^2......+n^n天后星期几,这个题我不知道正解,打了个表,发现循环节是294,就水过了,过了。。。。。。
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int a[1000];
char str[11][11]={"Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"};
void Init(){
for(int i=1;i<=294;i++){
int k=1;
for(int j=1;j<=i;j++){
k*=i;
k%=7;
}
a[i]=(a[i-1]+k)%7;
}
}
int main(){
int t;
Init();
scanf("%d",&t);
while(t--){
int n;
scanf("%d",&n);
n=(n-1)%294+1;
int x=a[n]%7;
printf("%s\n", str[x]);
}
return 0;
}