【发布时间】:2017-08-25 15:58:25
【问题描述】:
您好,最近我正在尝试 AIO 2009 中级的一个问题。
问题(改写)是:
有一个正整数序列,每个正整数都通过非负常数k加密(通过将k添加到序列中的每个值,并且k没有边界,只要a和b的以下边界持有),给出一个整数列表a。我们得到原始未加密列表 b 的一小部分,使得 2
我考虑的一些想法是:
暴力破解 b 的所有可能组合,直到我们找到一个是 a 子集的组合。 (我的解决方案的时间复杂度太高了(O(n^2)),如果有人可以编写 O(n) 解决方案,它会起作用)
求 b 和 a 中的数字之间的差异,然后找到匹配的子集。然后我们使用它来找到 b[0] 对应的索引,然后导出密钥 k。 (除了有一些我无法解决的极端情况外,这可行)
我想知道是否有人可以使用这两种方法中的任何一种在 python 3.x 中编写解决方案。此外,您能否解释一下哪种方法会更好、更有效,为什么?
谢谢
【问题讨论】:
-
加密是什么意思?异或? k 和原始整数的界限是多少?如果可以有多种解决方案怎么办?
-
@kfx 我已经编辑了问题,感谢您指出!
标签: python algorithm python-3.x