CF18B Platforms题解

题意翻译

题目描述:在一坐标轴上给出n块板子,每个板子所占的空间为[(k-1)m,(k-1)m+l](l

输入格式

第一个输入行包含 4 个整数nn,dd,mm,ll ( 1<=n,d,m,l<=10^{6},ln,dm,l<=106,l<m) — 分别:平台数量、蚱蜢 Bob 跳跃的长度和数字mm和ll需要查找的坐标kk-第四个平台:[(k-1)米,(k-1)米+升][(k−1)m,(k−1)+l].

输出格式

输出点的坐标,粗心跳汰机将落在该点的位置。不要忘记,如果鲍勃发现自己在平台边缘,他不会摔倒。

输入输出样例

输入 #1复制

2 2 5 3

输出 #1复制

4

输入 #2复制

5 4 11 8

输出 #2复制

20

思路分析:

  这道题的意思就是说判断青蛙的位置是否在木板上,如果不在的话,就输出上一个落点的位置,如果在的话,就让青蛙跳出当前木板,这里采用的方法是判断从起点到当前木板微端可以分成几个d(青蛙单次跳的距离),然后在在最后一次加上d就行了。例如木板尾端距离为7,d为3,此时可以分为2个d,最后一次的位置是6,然后加上d就是9,所以青蛙会跳到9。

#include
long long n,m,d,l,distance=0;//distance为青蛙当前的位置,从0开始
int main()
{   scanf("%lld %lld %lld %lld",&n,&d,&m,&l);for(long long k=1;k<=n;k++)//从第一块木板开始循环{if(distance<(k-1)*m)//如果青蛙当前位置小于当前木板的前端的话,证明青蛙不在当前木板上break;//所以直接跳出if(distance<=(k-1)*m+l)//如果青蛙当前位置小于当前木板的末端的话,证明青蛙在当前木板上distance=((k-1)*m+l)/d*d+d;//所以将青蛙的位置移到刚好跳出木板}printf("%lld",distance);//输出青蛙的上一个落点位置return 0;
}

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部