CF18 B. Platforms

Problem - 18B - Codeforces

 

题意:

有n个长为l的木板,第i个木板的起始位置在(i-1)*m

你的初始位置为0,每次跳跃距离为d

每次的落点在木板上才可以继续跳,问在哪个位置掉下去

 

记录到达一个木板的位置

设现在的位置为now,所在木板的右端点为r

那么(r-now)/d就是在这个木板还能跳跃的次数

(r-now+d)/d就是到下一个木板还需要的跳跃次数

再*d就是到下一个木板落点还需要的距离

如果落点在木板左端点左侧,就会掉下去

 

#include<cstdio>

int main()
{
    int n,d,m,l;
    scanf("%d%d%d%d",&n,&d,&m,&l);
    long long now=0,r;
    for(long long i=1;i<=n+1;++i)
    {
        if(now<(i-1)*m || i>n) break;
        r=(i-1)*m+l;
        if(r>=now) now+=(r-now+d)/d*d;
    }
    printf("%lld",now);
}

 

posted @ 2021-10-02 18:40  TRTTG  阅读(39)  评论(0编辑  收藏  举报