はまやんはまやんはまやん

hamayanhamayan's blog

Competition [第二回日本最強プログラマー学生選手権 A]

https://atcoder.jp/contests/jsc2021/tasks/jsc2021_a

解説

https://atcoder.jp/contests/jsc2021/submissions/21830396

1gあたりの価格が安くなるようにすればいいので、式としては

ans / Z < Y / X

が満たれればいい。
変形すると、

ans < ZY / X

となる。
よって、答えは大体ZY/Xとなる。
そのまま書くとC++では整数計算すると切り捨てとなるため、真に小さいというのを満たしてくれる。
だが、ZYがXで割り切れてしまう場合は<ではなく等しくなってしまうので、その場合だけ1円安くしておこう。

int X, Y, Z;
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> X >> Y >> Z;

    // 
    // ans < Z * Y / X

    int ans = Z * Y / X;
    if ((Z * Y) % X == 0) ans--;
    cout << ans << endl;
}