ZOJ 3785 What day is that day?(取模演算)

ZOJ 3785 What day is that day?(取模运算)

周日做了浙江ACM省赛一个有关模运算的题。

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

2
1
2

Sample Output

Sunday
Thursday


http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3785


拿到这个题我就向取模上走了! 

然后我就开始找规律,我是想1到n的n次方 1 ,2的2次方,3的3次方,4的4次方,5的5次方,6的6次方,7的7次方(因为要与7取模,所以为0的7次方),8的8次方(等于1的8次方)以此类推。第一个2的2次方和第二个2的9次方(也就是9的9次方)这样中间差 2的7次方,每个数都是这样。在下文中我用a记录了1-7的7次方%7的余数,

至于sum2,sum3 等这些是我找的规律,就是这些数一个循环 。 代码很简单。

#include<iostream>
#include<stdio.h>
using namespace std;
int a[8]={0,1,4,6,4,3,1,0};
int sum2[4]={0,4,5,0};
int sum3[7]={0,6,3,1,2,5,0};
int sum4[4]={0,4,6,0};
int sum5[7]={0,3,4,2,6,5,0};
int sum6[3]={0,1,0};
char week[7][10]={"Saturday","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday"};
int main()
{
	int cases ;
	cin>>cases;
	while(cases--)
	{
		long n;
		cin>>n;
		long period=n/7;//周期数
		int re =n%7;//出去周期后还剩几天
		int sum =0;
		long sum22=0,sum33=0,sum44=0,sum55=0,sum66=0;
		if(re>0)
		{
			sum =(period+1)%7;
			re--;
		}
		else sum=period%7;
		if(re>0)
		{
		  sum22=sum2[(period+1)%3];//%后面的当前nn对应的周期数
		  re--;
		}
		else sum22=sum2[(period)%3];
		if(re)
		{
		  sum33 =sum3[(period+1)%6];
		  re--;
		}
		else sum33 =sum3[period%6];
		if(re)
		{
			sum44 = sum4[(period+1)%3];
			re--;
		}
		else sum44 = sum4[period%3];
		if(re)
		{
			sum55 = sum5[(period+1)%6];
			re--;
		}
		else sum55 = sum5[period%6];
		if(re)
		{
			 sum66 = sum6[(period+1)%2];
			 re--;
		}
		else sum66 = sum6[period%2];
		sum+=sum22+sum33+sum44+sum55+sum66;
		printf("%s\n",week[sum%7]);
	}
}
这是我的想法,可能有点费劲,也没有上网看看大神解题报告。

可能是让我做复杂了。

好了!本来想写总结取模的运算呢!没时间了。

明天再来写取模总结。

好了!

感谢自己坚持!