What day is that day?
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.
题解:
找规律打表题:避免超时
#include"iostream"
#include"string"
using namespace std;
const int mod = 7;
int fastpow(int a,int n)
{
int base = a;
int res = 1;
while(n)
{
if(n&1)
res = (res*base)%mod;
base = (base*base)%mod;
n>>=1;
}
return res;
}
int main()
{
int t;
scanf("%d",&t);
int f;
int n;
char s[7][10] = {"Saturday","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday"};
while(t--)
{
f = 0;
scanf("%d",&n);
n%=294;
for(int i = 1;i<=n;i++)
{
f += fastpow(i,i);
f%=7;
}
printf("%s\n",s[f]);
}
}