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