这道题目正儿八经没啥难度,不过我看题解里没有和我方法相同的,那么我就来说一下吧

思路


因为 n 的最大值为 long int 所以循环加有超时的风险

虽然后面发现数据水没这个必要

所以对n要进行处理

它上午游泳 150 公里,下午游泳 100 公里

这句话可以合并为它一天游 250 公里

并且题目中有讲晚上和周末都休息(实行双休日)

所以它一周游 5 天,每周游5*250=1250(公里)

那么我们来看看代码

代码


#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);//输出
}