Official

B - 水泳の練習 / Swimming Practice Editorial by kyopro_friends Editorial for printing


\(A\geq C\) のとき答えは \(0\) です。そうでないとき、泳げる距離をあと \(C-A\) メートル伸ばす必要があるので、必要な練習の回数は \(\left\lceil\frac{C-A}{B}\right\rceil\) 回となります。

補足

今回の制約の条件下では、浮動小数点数型を用いて計算しても WA になることはありません。しかし常に誤差に対し心を留めることは面倒です。 そこで、正整数 \(X,Y\) に対し \(\left\lceil\frac{X}{Y}\right\rceil=\left\lfloor\frac{X+Y-1}{Y}\right\rfloor\) が成り立つことと、多くのプログラミング言語において正整数同士の除算は整数に切り捨てられることから、競技プログラミングにおいて整数除算の結果を切り上げで求める際には、後者を用いるのが一般的となっています。

実装例 (C++)

#include<bits/stdc++.h>
using namespace std;

int main(){
  int a, b, c;
  cin >> a >> b >> c;
  cout << max(0, (c-a+b-1)/b) << endl;
}

実装例 (Python)

A, B, C = map(int, input().split())
print(max(0, (C-A+B-1)//B))

このほか、制約の条件下では必要な練習回数が 10000 回以下であることから、実際に練習をシミュレーションすることでも答えを求めることができます。

posted:
last update: