首页 > 学院 > 开发设计 > 正文

ACM刷题之ZOJ————What day is that day?

2019-11-06 07:02:41
字体:
来源:转载
供稿:网友
What day is that day?

Time Limit: 2 Seconds      Memory Limit: 65536 KB

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

212

Sample Output

SundayThursday

Hint

A week consists of Sunday, Monday, Tuesday, Wednesday, Thursday, Friday and Saturday.

初看这题目,以为是快速幂,但看了范围后,感觉应该是规律题。

总结下做规律题的方法,尽可能的多大几组数据(要保证数据是正确的)

然后放到sublime里面找字串就好了。这题我找出的规律是294 但是网上说规律是40多

可能找的太急,找到了规律的倍数吧

下面是ac代码(里面有快速幂取模的代码)

#include<stdio.h>int qmod(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 x[400];int main(){	int zu,c=0,n,q;	long long k;	for(int i=1;i<300;i++)	{		//if(!(i%7))		//PRintf("/n/n");		c+=qmod(i,i);		x[i]=(c%7);	}	scanf("%d",&n);	while(n--)	{		scanf("%lld",&k);		k=k%294;		if(x[k]==0)		{			printf("Saturday/n");		}else if(x[k]==1)		{			printf("Sunday/n");		}else if(x[k]==2)		{			printf("Monday/n");		}else if(x[k]==3)		{			printf("Tuesday/n");		}else if(x[k]==4)		{			printf("Wednesday/n");		}else if(x[k]==5)		{			printf("Thursday/n");		}else if(x[k]==6)		{			printf("Friday/n");		}					}		}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表