如果给定两个长度为n的字符串,则必须通过以任意方式重新排列这两个字符串中的元素来找到不同的异或值。在
以下是我尝试的:String1 = input()
String2 = input()
s1_ones = String1.count('1') #Number of 1's in string1
s2_ones = String2.count('1') #Number of 1's in string2
minimum_overlap = s1_ones+s2_ones-n #minimum overlapping 1's when performing xor
maximum_overlap = min(s1_ones,s2_ones) #maximum overlapping 1's when performing xor
if(minimum_overlap<0):
minimum_overlap = 0
ans = 0
for x in range(minimum_overlap,maximum_overlap+1):
resulting_ones = s1_ones + s2_ones - 2*x #number of ones in resulting string
ans+=(nCr(n,resulting_ones)) #nCr is a function which returns number of possible values of resulting String.
print(ans)
我想再解释一下nCr(n,r)函数。假设你有一个长度为5的字符串,其中的个数是3。这里,N=5 String='11100'nCr(5,3)将给出所提供字符串的所有可能值,即(5!/3个!*2!)=10。
这种方法有什么问题?在
以下是nCr(n,k):
^{pr2}$