atcoder#AGC044A. [AGC044A] Pay to Win
[AGC044A] Pay to Win
配点 : 点
問題文
あなたは という数を持っており、これを に変えようとしています。
あなたが持っている数は、以下の操作により、定まった枚数のコインを支払うことで変化させることができます。
- 枚のコインを支払い、持っている数を 倍する。
- 枚のコインを支払い、持っている数を 倍する。
- 枚のコインを支払い、持っている数を 倍する。
- 枚のコインを支払い、持っている数を 増やす、または 減らす。
これらの操作は、任意の順に何度でも行うことができます。
持っている数を とするには、最小で何枚のコインが必要でしょうか。
T 個のテストケースについて答えてください。
制約
- はすべて整数である。
入力
入力は標準入力から与えられる。入力の 行目は以下の通りである。
そして、続く 行が 個のテストケースを表す。 これらはそれぞれ以下の形式の行である。
出力
各テストケースに対し、答えを標準出力に出力せよ。テストケースごとに改行すること。
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
個目のテストケースで、必要な最小枚数である 枚のコインで目標を達成する方法は以下の通りです。
- はじめ、持っている数 (以下、これを とする) は である。
- 枚のコインを支払い、 を 増やす ()。
- 枚のコインを支払い、 を 倍する ()。
- 枚のコインを支払い、 を 倍する ()。
- 枚のコインを支払い、 を 倍する ()。
- 枚のコインを支払い、 を 減らす ()。
個目のテストケースで、必要な最小枚数である 枚のコインで目標を達成する方法は以下の通りです。
- はじめ、 である。
- 枚のコインを支払い、 を 増やす ()。
- 枚のコインを支払い、 を 倍する ()。
- 枚のコインを支払い、 を 倍する ()。
- 枚のコインを支払い、 を 増やす ()。