ARC056A みんなでワイワイみかん

はじめに

整数除算や剰余の学習ができる問題です。

問題

https://atcoder.jp/contests/arc056/tasks/arc056_a

方針

  • 場合分けを行う
  • 最後に、最小値を求める

    パターン

  1. 単品で買う
  2. セットで買う(みかんが余ってもOK)
  3. 端数が出ないようにセットを買い、残りは単品で買う

ポイント

セットでぴったり買い切れるケースをパターン3に含めると、実装が楽。
(単品で買う必要がある部分が0だった、と考える)

パターン1 単品で買う

これは簡単。

1
K * A

パターン2 セットで買う

整数除算を行い、1を加えたものにセット価格をかける。
これでは、セットでぴったり買い切れるケースを考慮できていないが、
それはパターン3に含める。

1
( K//L + 1 ) * B

パターン3 端数が出ないようにセットを買い、残りは単品で買う

先ほどの要領で、セットの小計を求め、

1
K //L * B

残りを単品で揃えれば良い。

1
(K % L) * A

コード

1
2
3
A, B, K, L = map(int, input().split())
ans = [K * A, ( K//L + 1 ) * B, K //L * B + (K % L) * A]
print (min(ans))