【问题标题】:Distinct number of XORs不同数量的 XOR
【发布时间】:2020-03-31 09:47:10
【问题描述】:

给定:

两个二进制字符串xy长度相同;以arbitrary 的方式重新排列x 的字符,并以arbitrary 的方式重新排列y 的字符(不一定相同)大大地。

得到的不同异或的总数是多少?

注意:

if x = 1 and y = 11 in binary then take x = 01 So,that length of x and y are equal

例子:

if x = 0 and y = 10 

那么可能的结果是 2,即 2 个不同的 XOR 是可能的

"00" XOR "10" is "10"
"00" XOR "01" is "01"
"00" XOR "10" is "10"
"00" XOR "01" is "01"

【问题讨论】:

  • 请举例说明你想要的输出。请分享您到目前为止所做的工作,因为这对您和社区都非常有帮助。
  • 您要求其他人为您解决现场编程竞赛问题:codechef.com/DEC19B/problems/BINXOR,而竞赛仍在进行中。那是作弊。不要那样做。
  • 但是我想说我没有参加那场比赛。我只是要求我的方法不符合

标签: python python-3.x algorithm binary xor


【解决方案1】:

希望这就是你所追求的:

代码:

def f(x, y):
    # Convert integers to string
    x, y = str(x), str(y)

    # Pad inputs
    x, y = x.zfill(max(len(x), len(y))), y.zfill(max(len(x), len(y)))

    rv = set()
    for x_comb in set(''.join(perm_x) for perm_x in itertools.permutations(x)):
        for y_comb in set(''.join(perm_y) for perm_y in itertools.permutations(y)):
            rv.add(f"{x_comb} XOR {y_comb} is {int(x_comb,2) ^ int(y_comb,2):b}")

    return list(rv)

示例用法:

>>> f(0, 10)
['00 XOR 01 is 1', '00 XOR 10 is 10']

【讨论】:

    【解决方案2】:

    您可以尝试将不同数量的可能字符串计算为 (m+n)!/m!n!其中 m 和 n 是零和 1 的个数,然后 find 尝试找到一个模式,例如当字符串相同且不同并达到解决方案时

    【讨论】:

      猜你喜欢
      • 2021-04-23
      • 2014-09-15
      • 1970-01-01
      • 2021-03-22
      • 2012-11-18
      • 2014-06-15
      • 1970-01-01
      • 2020-01-17
      • 1970-01-01
      相关资源
      最近更新 更多