atcoder#ABC301D. [ABC301D] Bitmask

[ABC301D] Bitmask

配点 : 400400

問題文

0, 1, ? からなる文字列 SS および整数 NN が与えられます。 SS に含まれる ? をそれぞれ 0 または 1 に置き換えて 22 進整数とみなしたときに得られる値の集合を TT とします。 たとえば、S=S= ?0? のとき、 $T=\lbrace 000_{(2)},001_{(2)},100_{(2)},101_{(2)}\rbrace=\lbrace 0,1,4,5\rbrace$ です。

TT に含まれる NN 以下の値のうち最大のものを (1010 進整数として) 出力してください。 NN 以下の値が TT に含まれない場合は、代わりに -1 を出力してください。

制約

  • SS0, 1, ? からなる文字列
  • SS の長さは 11 以上 6060 以下
  • 1N10181\leq N \leq 10^{18}
  • NN は整数

入力

入力は以下の形式で標準入力から与えられる。

SS

NN

出力

答えを出力せよ。

?0?
2
1

問題文中で例示したとおり、T={0,1,4,5}T=\lbrace 0,1,4,5\rbrace です。 TT に含まれる NN 以下の値は 0011 なので、そのうちの最大である 11 を出力します。

101
4
-1

T={5}T=\lbrace 5\rbrace であるため、NN 以下の値は TT に含まれません。

?0?
1000000000000000000
5