一本通1083 计算星期几

【题目描述】

假设今天是星期日,那么过ab天之后是星期几?

【输入】

两个正整数a,b,中间用单个空格隔开。0<a100,0<b10000

【输出】

一个字符串,代表过ab天之后是星期几。

其中,Monday是星期一,Tuesday是星期二,Wednesday是星期三,Thursday是星期四,Friday是星期五,Saturday是星期六,Sunday是星期日。


1.回刷前面没做的题的时候做到的。这是一个非常水的题嘛,直接开搞,暴力一点。

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int main()
{
	int a,b;
	cin>>a>>b;
	int x=pow(a,b);
	int y=x/7;
	int z=x-7*y;
	if(z==1)
	cout<<"Monday";
	if(z==2)
	cout<<"Tuesday";
	if(z==3)
	cout<<"Wednesday";
	if(z==4)
	cout<<"Thursday";
	if(z==5)
	cout<<"Friday";
	if(z==6)
	cout<<"Saturay";
	if(z==0)
	cout<<"Sunday";
	return 0; 
}

 好水真的好水...一点意思都没有

2.然后我就交了.......

   蛤?!

   为嘛只得了十分?

3.带进给的3和2000,果然不行,可能爆int了,让我看看怎么搞。

   既然到最后再算余数不行,

   那就每乘上一个a的时候都把余数算出来,循环b次,这样应该就能保证不爆int了。

   话不多说,打代码

for(int i=1;i<=b;i++)
	{
		z*=a;
		z%=7;
	}

 做一个这样的循环,到最后输出的结果就能不爆int了。

   让我们带进去交一遍,

   这次果然好了。

4.总结总结

   这种题一定一定要看一看会不会超值,

   可能先算出总数再进行其他运算的时候,

   这个总数已经爆掉了;

   当比较大的数不能成功运行的时候,

   就要优化自己的程序,

   比较正常的就是从程序里面开始算,用循环做,

 (就跟上面这个一样)

   所以做题的时候还是要长点心啊!

原文地址:https://www.cnblogs.com/Jiangxingchen/p/12243885.html