-
题目描述
It's Saturday today, what day is it after 1^1 + 2^2 + 3^3 + ... + N^N days?
-
输入
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).
-
输出
For each test case, output one string indicating the day of week.
样例输入
2 1 2样例输出
Sunday Thursday
(可用费马小定理)
#include <iostream>
#include <stdio.h>
using namespace std;
string ans2[]={"Saturday","Sunday","Monday", "Tuesday", "Wednesday", "Thursday", "Friday" };
int qm(int a,int b) //快速幂取模
{
int r=1;
while(b)
{
if(b&1)
{
r=((r%7)*(a%7))%7;
}
a=((a%7)*(a%7))%7;
b>>=1;
}
return r;
}
int main()
{
int x[400],c=0,n;
long long k;
for(int i=1;i<300;i++)
{
c+=qm(i,i);
x[i]=(c%7);
}
scanf("%d",&n);
while(n--)
{
scanf("%lld",&k);
k=k%294;
cout<<ans2[x[k]]<<endl;
}
}