問題:
分析
分析題目,可以看出,給你一個開始的星期,再給一個總共天數,在這些天內,只有周六周日休息,其他全要游泳250公里。
那分支處理好啦
當星期為6時,需要消耗2天,再游泳
星期為7時,消耗一天,到星期一開始游泳
其他情況+250里程。
總結的分支如下:
- 處理周六和周日的情況:周六(x=6)時直接跳到周日(x=7),不累加;周日(x=7)時重置為周一(x=1),同樣不累加。
- 其他工作日(x=1到5)時累加250,并遞增x。
- 需要注意x的循環變化,確保在處理完周日之后正確回到周一,并且不遺漏或重復計算天數。
代碼
#include<bits/stdc++.h>using namespace std;int main()
{int x; unsigned long long n,p=0;cin>>x>>n;for(int i=0;i<n;i++){if(x==7)//周六要算兩天的,所以不能放一起{x=1;continue;}else if(x==6){x++;continue;}else{p+=250; }x++;}cout<<p<<endl;return 0;
}
總結
有人可能注意到了,這里用了unsigned long long
類型,足夠大,一般不會溢出。
但是不是小題大用了呢?其實由于天數范圍是1≤n≤10e6,而如果最大了,里程會非常大,因為每次有效日內都要加250,所以使用這個類型其實剛剛好。