#aBC301D. [ABC301D] Bitmask

[ABC301D] Bitmask

AT_abc301_d [ABC301D] Bitmask

题目描述

给定一个由 01? 组成的字符串 SS 和一个整数 NN。将 SS 中的每个 ? 替换为 01,并将其视为二进制整数,得到的所有可能值的集合记为 TT。例如,当 S=S= ?0? 时,$T=\lbrace 000_{(2)},001_{(2)},100_{(2)},101_{(2)}\rbrace=\lbrace 0,1,4,5\rbrace$。

请输出 TT 中不超过 NN 的最大值(以十进制整数形式输出)。如果 TT 中没有不超过 NN 的值,则输出 -1

输入格式

输入以以下格式从标准输入读入。

SS NN

输出格式

请输出答案。

输入输出样例 #1

输入 #1

?0?
2

输出 #1

1

输入输出样例 #2

输入 #2

101
4

输出 #2

-1

输入输出样例 #3

输入 #3

?0?
1000000000000000000

输出 #3

5

说明/提示

限制条件

  • SS01? 组成。
  • SS 的长度为 116060
  • 1N10181 \leq N \leq 10^{18}
  • NN 是整数。

样例解释 1

如题目中所示,T={0,1,4,5}T=\lbrace 0,1,4,5\rbraceTT 中不超过 NN 的值为 0011,其中最大的是 11,因此输出 11

样例解释 2

T={5}T=\lbrace 5\rbrace,因此 TT 中没有不超过 NN 的值。

由 ChatGPT 4.1 翻译