题意:给出n快板,间隔一定长度(已知),且每块板的长度相等(已知),一个青蛙从原点0起跳,每次跳d距离远,问最后青蛙会落在哪里(没落在板子上就结束跳跃)....
贪心策略,我是这么认为的,从小到大枚举板子的长度,然后每次先判断,如果青蛙落在板子前面,那么一定已经落水了,如果没有,使青蛙每次都落在当前板子的后面...
Description
In one one-dimensional world there are n platforms. Platform with index k (platforms are numbered from 1) is a segment with coordinates [(k - 1)m, (k - 1)m + l], and l < m. Grasshopper Bob starts to jump along the platforms from point 0, with each jump he moves exactly d units right. Find out the coordinate of the point, where Bob will fall down. The grasshopper falls down, if he finds himself not on the platform, but if he finds himself on the edge of the platform, he doesn't fall down.
Input
The first input line contains 4 integer numbers n, d, m, l (1 ≤ n, d, m, l ≤ 106, l < m) — respectively: amount of platforms, length of the grasshopper Bob's jump, and numbers m and l needed to find coordinates of the k-th platform: [(k - 1)m, (k - 1)m + l].
Output
Output the coordinates of the point, where the grosshopper will fall down. Don't forget that if Bob finds himself on the platform edge, he doesn't fall down.
Sample Input
2 2 5 3
4
5 4 11 8
20
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long n,d,m,l,ans,i;
cin>>n>>d>>m>>l;
ans=0;
for(i=1;i<=n;i++) {
if(ans<((i-1)*m)) break;
while(ans<=(i-1)*m+l) ans=(((i-1)*m+l)/d)*d+d;
}
cout<<ans<<endl;
return 0;
}