Problem Description
It’s Saturday today, what day is it after 1^1 + 2^2 + 3^3 + … + N^N 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<bits/stdc++.h>
using namespace std;
int a[300];
int main()
{
int t, n, i, j, x;
for(i = 1; i <= 294; i++)
{
x = 1;
for(j = 1; j <= i; j++)
{
x = x * i;
x = x % 7;
}
a[i] += a[i-1] + x;//求对应刚开始过了第几天
}
scanf("%d", &t);
while(t--)
{
scanf("%d", &n);
n = (n - 1) % 294 + 1;//打表格可以发现n跑了294次后会循环
if(a[n] % 7 == 0) printf("Saturday\n");
if(a[n] % 7 == 1) printf("Sunday\n");
if(a[n] % 7 == 2) printf("Monday\n");
if(a[n] % 7 == 3) printf("Tuesday\n");
if(a[n] % 7 == 4) printf("Wednesday\n");
if(a[n] % 7 == 5) printf("Thursday\n");
if(a[n] % 7 == 6) printf("Friday\n");
}
return 0;
}