一本通1083 计算星期几
【题目描述】
假设今天是星期日,那么过ab天之后是星期几?
【输入】
两个正整数a,b,中间用单个空格隔开。0<a≤100,0<b≤10000。
【输出】
一个字符串,代表过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.总结总结
这种题一定一定要看一看会不会超值,
可能先算出总数再进行其他运算的时候,
这个总数已经爆掉了;
当比较大的数不能成功运行的时候,
就要优化自己的程序,
比较正常的就是从程序里面开始算,用循环做,
(就跟上面这个一样)
所以做题的时候还是要长点心啊!

浙公网安备 33010602011771号