Time Limit: 2 sec / Memory Limit: 256 MB
問題文
ある会社ではコンテスト参加者への景品としてバッジを配ることになりました。
見積もりによるとバッジが N 個必要です。
ある会社はバッジ製作機を 3 個持っており、A, B, C という名前が付けられています。
A, B, C は 1 分動かすと、ちょうど 1 分後にそれぞれ A 個、B 個、C 個のバッジを生産します。
この機械は 1 分単位でしか動かすことができず、秒単位で動かす (例えば機械 A を 30 秒動かしてバッジ A/2 個作る) ことはできません。
これらの製作機は 1 分稼働させると、2 分は放熱(待機)させる必要があるため、ある会社では 3 つの機械を順繰りに使用することにしました。例えば、機械 A → 機械 B → 機械 C → 機械 A → 機械 B → 機械 C → 機械 A → ... という順番や、機械 B → 機械 A → 機械 C → 機械 B → 機械 A → 機械 C → 機械 B → ... などの順番で動かします。
コンテスト開催まであまり時間がないので、できるだけ早くバッジを集めたいと考えています。うまく順番を選んだときに、N 個以上バッジが出来上がるまでにかかる時間の最小値を計算するプログラムを作成してください。
入力
入力は以下の形式で標準入力から与えられる。
N A B C
- 1 行目には、必要なバッジの個数 N (1 ≦ N ≦ 1,000) が与えられる。
- 2 行目には、機械 A が 1 分間で作成するバッジの個数 A (1 ≦ A ≦ 1,000) が与えられる。
- 3 行目には、機械 B が 1 分間で作成するバッジの個数 B (1 ≦ B ≦ 1,000) が与えられる。
- 4 行目には、機械 C が 1 分間で作成するバッジの個数 C (1 ≦ C ≦ 1,000) が与えられる。
出力
バッジを N 個以上製作するのにかかる時間の最小値を 1 行に出力せよ。出力の末尾にも改行を入れること。
入力例1
26 5 2 3
出力例1
8
機械 A → 機械 B → 機械 C → 機械 A → 機械 B →機械 C → 機械 A → 機械 B という手順で動かすことにより 8 分で 26 個以上バッジを製作することができます。
時間 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
動かす機械の名前 | A | B | C | A | B | C | A | B |
動かす機械の生産量 | 5 | 2 | 3 | 5 | 2 | 3 | 5 | 2 |
累積のバッジ数 | 5 | 7 | 10 | 15 | 17 | 20 | 25 | 27 |
入力例2
6 2 3 4
出力例2
2
必ずしもすべての機械を稼働させる必要はありません。
入力例3
450 3 7 19
出力例3
46