题解 P1424 【小鱼的航程(改进版)】
woshiluo
2018-01-22 09:35:34
这道题目正儿八经没啥难度,不过我看题解里没有和我方法相同的,那么我就来说一下吧
### 思路
***
因为 `n` 的最大值为 `long int` 所以循环加有超时的风险
~~虽然后面发现数据水没这个必要~~
所以对n要进行处理
` 它上午游泳 150 公里,下午游泳 100 公里`
这句话可以合并为`它一天游 250 公里`
并且题目中有讲`晚上和周末都休息(实行双休日)`
所以它一周游 5 天,每周游5\*250=1250(公里)
那么我们来看看代码
### 代码
***
```cpp
#include <cstdio>
using namespace std;
int a[8]={0,250,250,250,250,250,0,0};//对每天游的公里数打个表
int x,n,cnt;
int main(){
scanf("%d%d",&x,&n);//从周 x 开始游,游 n 天
int temp=n/7;
n%=7;//游了 temp 周,又 n 天
cnt+=1250*temp;
//目前已知的路数加起来,也就是周数(temp)*每周游的公里数(1250)
for(int i=1;i<=n;i++){// 循环解决剩下的n天
cnt+=a[x];//加上目前天游的公里数
x++;//加一天
if(x>7)x-=7;//如果大于周天就到周一
}
printf("%d",cnt);//输出
}
```