【算法题】小鱼的航程
问题:
分析
分析题目,可以看出,给你一个开始的星期,再给一个总共天数,在这些天内,只有周六周日休息,其他全要游泳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,所以使用这个类型其实刚刚好。