题意:
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.
思路:把n^n 次方打表,周期是42,即可
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int num[50];
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<=42;i++)
{
num[i]=(pow(i)+num[i-1])%7;
}
int T;
scanf("%d",&T);
while(T--)
{
int n;
scanf("%d",&n);
int m=(((n-1)/42)*num[42]+num[(n-1)%42+1])%7;
printf("%s\n",day[m]);
}
return 0;
}