{"trustable":true,"prependHtml":"\u003cstyle type\u003d\"text/css\"\u003e\n #problem-body \u003e pre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n word-break: break-all;\n word-wrap: break-word;\n color: #333;\n background: rgba(255, 255, 255, 0.5);\n border: 1px solid #ccc;\n border-radius: 6px;\n }\n\u003c/style\u003e\n","sections":[{"title":"","value":{"format":"HTML","content":"\u003cdiv id\u003d\"problem-body\"\u003e\n\t\u003cp\u003e给定一个包含所有 K 位二进制数的序列:0, 1,..., 2\u003csup\u003eK\u003c/sup\u003e-1。\n你需要将该序列完全分割成 M 个块。每个块必须是原始序列的连续子序列。设 S\u003csub\u003ei\u003c/sub\u003e (1 ≤ i ≤ M) 为第 i 个块中所有数字在二进制表示下的 1 的总数,而 S 则为所有 S\u003csub\u003ei\u003c/sub\u003e 中的最大值,即任何块中 1 的最大数量。你的目标是最小化 S。\u003c/p\u003e\n\u003ch3\u003e输入\u003c/h3\u003e\n\u003cp\u003e输入的第一行包含两个用单个空格分隔的数字 K 和 M (1 ≤ K ≤ 100, 1 ≤ M ≤ 100, M ≤ 2^K)。\u003c/p\u003e\n\u003ch3\u003e输出\u003c/h3\u003e\n\u003cp\u003e在一行中输出通过某种分割可以获得的最小 S,不要输出前导零。结果不能保证适合 64 位整数。\u003c/p\u003e\n\u003ch3\u003e示例\u003c/h3\u003e\n\u003cdiv\u003e\u003ctable class\u003d\"vjudge_sample\"\u003e\n\u003cthead\u003e\n \u003ctr\u003e\n \u003cth\u003eInput\u003c/th\u003e\n \u003cth\u003eOutput\u003c/th\u003e\n \u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n \u003ctr\u003e\n \u003ctd\u003e\u003cpre\u003e3 4\r\n\r\n\u003c/pre\u003e\u003c/td\u003e\n \u003ctd\u003e\u003cpre\u003e4\r\n\u003c/pre\u003e\u003c/td\u003e\n \u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\u003c/div\u003e"}}]}