• 全部
...

(每日一练28817)题目名称:交换后的or

文盲老顾
WEB应用领新星创作者
博客专家认证
2023-05-17 09:15:58

给定两组长度为n的二进制串,请问有多少种方法在第一个串中交换两个不同位置上的数字,使得这两个二进制串“或”的结果发生改变?

嗯。。。题解太多了,就是分成4种情况,然后各自统计有多少数量,同时累加即可

  1. n = int(input())
  2. s1,s2 = input(),input()
  3. arr,ans = [0,0,0,0],0
  4. for i in range(n):
  5. if s1[i] == s2[i] == '1':
  6. arr[0] += 1
  7. ans += arr[3]
  8. elif s1[i] == s2[i] == '0':
  9. arr[3] += 1
  10. ans += arr[0] + arr[1]
  11. elif s1[i] == '1':
  12. arr[1] += 1
  13. ans += arr[3] + arr[2]
  14. else:
  15. arr[2] += 1
  16. ans += arr[1]
  17. print(ans)
...全文
给本帖投票
127 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
文盲老顾 2023-06-24
  • 打赏
  • 举报
回复
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)

320

社区成员

发帖
与我相关
我的任务
社区描述
主要用于技术交流,包括但不限于 .net,mssql,js,css,python,算法,运维。也可以晒最新技术,美图,运动等。最后,如果有问题,可以提问,老顾能帮忙的会尽量帮忙哦。
前端sqlserverasp.net 技术论坛(原bbs) 北京·西城区
社区管理员
  • 文盲老顾
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧

手机看
关注公众号

关注公众号

客服 返回
顶部