题意:给出n个站台,站台的宽度为l,然后站台的两端坐标符合 [(k - 1)m, (k - 1)m + l],现在从0位置出发,每次移动距离d,问移动到哪个位置会掉下站台。
考虑 (t-1)*m+l< kd < t*m ,t在1,n区间内
是否有整数k满足这个不等式,枚举t,判断((t-1)*m+l)/d和t*m/d区间内是否存在一个整数,如果出现1
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
typedef long long ll;
int main()
{
ll n,d,m,l,a,b;
scanf("%lld%lld%lld%lld",&n,&d,&m,&l);
for(int i=1;i<=n;++i)
{
a=l+(i-1)*m,b=i*m-1;
if(a/d!=b/d)break;
}
printf("%lld",a/d*d+d);
}