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.
Author: ZHOU, Yuchen
Source: The 11th Zhejiang Provincial Collegiate Programming Contest
暴力打表找循环节,,发现是294.。
然后直接mod294输出。
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int num[1000];
char day[10][10] = {"Saturday","Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"};
int pow(int x)
{
int ans=1;
for(int i=1; i<=x; i++)
ans=(ans*x)%7;
return ans;
}
int main()
{
for(int i=1; i<=300; i++)
num[i]=(pow(i)+num[i-1])%7;
int T;
scanf("%d",&T);
while(T--)
{
int n;
scanf("%d",&n);
printf("%s\n",day[num[n%294]]);
}
return 0;
}