【題目描述】
假設今天是星期日,那么過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.總結總結
這種題一定一定要看一看會不會超值,
可能先算出總數再進行其他運算的時候,
這個總數已經爆掉了;
當比較大的數不能成功運行的時候,
就要優化自己的程序,
比較正常的就是從程序里面開始算,用循環做,
(就跟上面這個一樣)
所以做題的時候還是要長點心啊!