atcoder#AGC061E. [AGC061E] Increment or XOR
[AGC061E] Increment or XOR
配点 : 点
問題文
非負整数 があり、はじめその値は です。以下の操作を任意の順に何度でも行うことができます。
- に を足す。この操作のコストは である。
- 以上 以下の を選び、 を に置き換える。この操作のコストは である。ここで、 はビット単位 演算を表す。
与えられた非負整数 に を等しくするのに必要な最小の合計コストを求めるか、それが不可能であることを報告してください。
ビット単位 $\mathrm{XOR}$ 演算とは
非負整数 $A, B$ のビット単位 $\mathrm{XOR}$、$A \oplus B$ は、以下のように定義されます。
- $A \oplus B$ を二進表記した際の $2^k$ ($k \geq 0$) の位の数は、$A, B$ を二進表記した際の $2^k$ の位の数のうち一方のみが $1$ であれば $1$、そうでなければ $0$ である。
一般に、k 個の非負整数 p_1, p_2, p_3, \dots, p_k のビット単位 \mathrm{XOR} は (\dots ((p_1 \oplus p_2) \oplus p_3) \oplus \dots \oplus p_k) と定義され、これは p_1, p_2, p_3, \dots, p_k の順番によらないことが証明できます。
制約
- ()
- ()
- 入力中の値は全て整数である。
入力
入力は、標準入力から以下の形式で与えられる。
出力
課題が達成不可能なら、-1
を出力せよ。
そうでないなら、必要な最小の合計コストを出力せよ。
1 15 0 1
8 2
5
以下の方法で を と等しくすることができます。
- を選んで を に置き換え、 とする。この操作のコストは である。
- に を足し、 とする。この操作のコストは である。
- を選んで を に置き換え、 とする。この操作のコストは である。
3 21 10 100
30 1
12 1
13 1
3
1 2 0 1
1 1
-1
8 352217 670575 84912
239445 2866
537211 16
21812 6904
50574 8842
380870 5047
475646 8924
188204 2273
429397 4854
563645