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.
AC代码(容我多说几句这个题一看就是有周期但是没想到周期竟然这么大所以只能打表
看了好多博客发现那个找周期的代码有点看不太懂然后问了一位神仙,他打表之后把
结果复制到word文档里面查找相同的元素来找周期,个人认为骚的一批)
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int s[295];
char st[10][12] = {"Saturday","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday"};
int work(int n)
{
int sm = 1;
for(int i = 1;i<=n;i++)
{
sm = sm*n;
sm = sm%7;
}
return sm;
}
void init()
{
s[0] = 0;
for(int i = 1;i<295;i++)
{
s[i] = s[i-1]+work(i);
s[i] = s[i]%7;
}
}
int main()
{
init();
int t, n;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
n = n%294;
printf("%s\n",st[s[n]]);
}
return 0;
}