您的位置:首页 > 编程语言 > Go语言

ZOJ 3785-What day is that day 解题报告

2014-04-15 21:24 453 查看
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5272

主要是找到一个规律,比赛的时候想到了可能是找规律,但找的数太小了,只找了20以内的,其实是294,找到了规律就简单了,打个表就行,这里用到了快速幂,只要logn的时间。

#include <cstdio>
#include <algorithm>
using namespace std;
const char week[7][20]={"Saturday","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday"};
int q_mi(int num,int n){
int ans=1;
while(n!=0){
if(n&1)
ans=(ans*num)%7;
n>>=1;
num=(num*num)%7;
}
return ans;
}
int main(){
int i,j;
int T;
scanf("%d",&T);
int table[300];
table[0]=0;
for(i=1;i<=294;i++){
table[i]=(table[i-1]+q_mi(i,i))%7;
}
while(T--){
int n;
scanf("%d",&n);
n%=294;
printf("%s\n",week[table
]);
}
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ZOJ algorithm 省赛