Codeforces 18 B. Platforms
問題
数直線上にn個の足場があり、(1番目から数えて)k番目の足場は[(k-1)m,(k-1)m+l]の線分である。
0の点から、右に幅dだけジャンプして着地することを繰り返す。
足場がない場所に着地すると着地失敗であるが、足場の端に着地することはできる。
最初に着地失敗する地点の座標を求めよ。
制約条件
n,d,m,l≦10^6
方針
シミュレート。
一つの足場上での複数回のジャンプは全部シミュレートするとTLEなので、まとめて足す。
ソースコード
ll n,d,m,l; void run(){ cin>>n>>d>>m>>l; ll x=0; rep(i,n){ if(x<i*m)break; if(x<=i*m+l)x+=((i*m+l-x)/d+1)*d; } cout<<x<<endl; }