atcoder#AGC044A. [AGC044A] Pay to Win

[AGC044A] Pay to Win

配点 : 400400

問題文

あなたは 00 という数を持っており、これを NN に変えようとしています。

あなたが持っている数は、以下の操作により、定まった枚数のコインを支払うことで変化させることができます。

  • AA 枚のコインを支払い、持っている数を 22 倍する。
  • BB 枚のコインを支払い、持っている数を 33 倍する。
  • CC 枚のコインを支払い、持っている数を 55 倍する。
  • DD 枚のコインを支払い、持っている数を 11 増やす、または 11 減らす。

これらの操作は、任意の順に何度でも行うことができます。

持っている数を NN とするには、最小で何枚のコインが必要でしょうか。

T 個のテストケースについて答えてください。

制約

  • 1T101 \le T \le 10
  • 1N10181 \le N \le 10^{18}
  • 1A,B,C,D1091 \le A, B, C, D \le 10^9
  • N,A,B,C,DN, A, B, C, D はすべて整数である。

入力

入力は標準入力から与えられる。入力の 11 行目は以下の通りである。

TT

そして、続く TT 行が TT 個のテストケースを表す。 これらはそれぞれ以下の形式の行である。

NN AA BB CC DD

出力

各テストケースに対し、答えを標準出力に出力せよ。テストケースごとに改行すること。

5
11 1 2 4 8
11 1 2 2 8
32 10 8 5 4
29384293847243 454353412 332423423 934923490 1
900000000000000000 332423423 454353412 934923490 987654321
20
19
26
3821859835
23441258666

11 個目のテストケースで、必要な最小枚数である 2020 枚のコインで目標を達成する方法は以下の通りです。

  • はじめ、持っている数 (以下、これを xx とする) は 00 である。
  • 88 枚のコインを支払い、xx11 増やす (x=1x = 1)。
  • 11 枚のコインを支払い、xx22 倍する (x=2x = 2)。
  • 11 枚のコインを支払い、xx22 倍する (x=4x = 4)。
  • 22 枚のコインを支払い、xx33 倍する (x=12x = 12)。
  • 88 枚のコインを支払い、xx11 減らす (x=11x = 11)。

22 個目のテストケースで、必要な最小枚数である 1919 枚のコインで目標を達成する方法は以下の通りです。

  • はじめ、x=0x = 0 である。
  • 88 枚のコインを支払い、xx11 増やす (x=1x = 1)。
  • 11 枚のコインを支払い、xx22 倍する (x=2x = 2)。
  • 22 枚のコインを支払い、xx55 倍する (x=10x = 10)。
  • 88 枚のコインを支払い、xx11 増やす (x=11x = 11)。