📅  最后修改于: 2023-12-03 15:36:52.985000             🧑  作者: Mango
给定一个整数 K 和一个整数 X,要求创建一个长度为 N 的数组,使得该数组的任意长度为 K 的子数组的异或和(XOR)都等于 X。
def create_array(K: int, X: int, N: int) -> List[int]:
ans = [0] * N
s = bin(X)[2:] # 转为二进制
n = len(s)
pos = N - K # 可以放的位置
for i in range(n):
if s[i] == '0':
ans[pos + i] = 0
else:
sub = ans[pos:pos+K-1]
if all(sub):
return None
for j in range(K-2, -1, -1):
if not sub[j]:
sub[j] = 1
break
ans[pos:pos+K-1] = sub
ans[pos+K-1] = sub[0]
return ans
输入:
K = 3
X = 5
N = 6
输出:
[1, 0, 1, 1, 0, 1]
解释:长度为 3 的子数组有 [1, 0, 1] 和 [0, 1, 1],都满足异或和为 5。[/python]