luogu#P15962. [ICPC 2018 Jakarta R] Binary String

[ICPC 2018 Jakarta R] Binary String

题目描述

二进制字符串是由 0011 组成的非空序列,例如 010110111101 等。阿玉有一个她最喜欢的二进制字符串 SS,该字符串不包含前导零。她想用计算器将 SS 转换成它的 十进制 表示。

不幸的是,她的计算器无法处理任何大于 KK 的整数,一旦超过就会崩溃。因此,阿玉可能需要从 SS 中删除零个或多个二进制位,同时保持剩余位的顺序不变,使得其十进制表示不超过 KK。得到的二进制字符串也不能包含前导零。

你的任务是帮助阿玉确定从 SS 中删除的最少二进制位数量,以满足阿玉的需求。

例如,设 S=1100101S = 1100101K=13K = 13。注意 11001011100101 的十进制表示为 101101,因此我们需要从 SS 中删除若干位,使其值不超过 KK。我们可以删除第 33、第 55 和第 66 个最高有效位,即 1100101110111\underline{0}0\underline{10}1 \to 110111011101 的十进制表示为 1313,不超过 K=13K = 13。在这个例子中,我们删除了 33 位,这是可能的最小删除次数(如果只删除 22 位,我们将得到一个长度为 55 位的二进制字符串;注意到任何长度为 55 位的二进制字符串的十进制值至少为 1616)。

输入格式

输入的第一行包含一个整数 KK1K2601 \leq K \leq 2^{60}),表示阿玉计算器的限制。第二行包含一个二进制字符串 SS1S601 \leq |S| \leq 60),表示阿玉最喜欢的二进制字符串。你可以假定 SS 不包含前导零。

输出格式

输出一行一个整数,表示从 SS 中删除的最少二进制位数量。

13
1100101
3
13
1111111
4

提示

样例输入 #1 的解释

该样例即为题目描述中给出的示例。

样例输入 #2 的解释

阿玉必须删除 44 位才能得到 111111,其十进制表示为 77

翻译由 DeepSeek V3.2 完成