320
社区成员




给定两组长度为n的二进制串,请问有多少种方法在第一个串中交换两个不同位置上的数字,使得这两个二进制串“或”的结果发生改变?
嗯。。。题解太多了,就是分成4种情况,然后各自统计有多少数量,同时累加即可
- n = int(input())
- s1,s2 = input(),input()
- arr,ans = [0,0,0,0],0
- for i in range(n):
- if s1[i] == s2[i] == '1':
- arr[0] += 1
- ans += arr[3]
- elif s1[i] == s2[i] == '0':
- arr[3] += 1
- ans += arr[0] + arr[1]
- elif s1[i] == '1':
- arr[1] += 1
- ans += arr[3] + arr[2]
- else:
- arr[2] += 1
- ans += arr[1]
- print(ans)
n = int(input())
s1,s2 = input(),input()
arr,ans = [0,0,0,0,'11','10','01','00',(3,),(2,3),(1,),(0,1)],0
for i in range(n):
for j in range(4,8):
if s1[i] == arr[j][0] and s2[i] == arr[j][1]:
arr[j - 4] += 1
ans += sum([arr[v] for v in arr[j + 4]])
print(ans)