华沙收集车票已经有一段时间了。他收集了上千张的车票。华沙已经厌倦了传统幸运车票的定义。所以他想寻找一个不一样的定义。华沙不理解为什么所有的车票要分为幸运的和不幸运的。他认为所有的车票都是幸运的,只是幸运的程度不一样。有了这个想法,他重新定义了车票的幸运程度。一张车票有 位数字。数字 的书写如图。
就像在电子时钟里看到的数字一样,用 根线条表示数字。每根线条有两种状态,着色或不着色。着色的线条组成一个数字。华沙认为所有的数字都是这么书写的。把车票号码的右半部分放在左半部分上面,那么第 位数字就会和第 位重合,第 位就会和第 重合…,第 位数字和第 位数字重合。对于每对重合的数字,统计这两个数字重合后都着色的线条数量。然后把每对统计的结果加起来,就是车票的幸运程度了。
现在,给定一个 位数字的车票号码。找出一个 位数字的车票号码,使得这个号码在数值上大于给定的号码,在幸运程度上也大于给定的号码。如果存在多个这样的号码,我们选择数值最小的那个号码。
Constraints
Solution
一个数字的结构可以压缩成一个七位的二进制数,每一对数字幸运值即为对应二进制数取与后的 的位数。
需要在幸运值大的情况下字典序最小,则可从最后一位开始对每一位枚举要替代的数字。若当前位没有符合条件的可填数,则将其赋值为 。当出现第一个幸运值大的情况时,对后面进行贪心,贪心完的结果即为答案。
时间复杂度 。
Code
1 |
|