2025B-出错的或电路-200分

刷题笔记合集🔗

问题描述

某生产门电路的厂商发现某一批次的或门电路不稳定,具体现象为计算两个二进制数的或操作时,第一个二进制数中某两个比特位会出现交换,交换的比特位置是随机的,但只交换这两个位,其他位不变。

这个交换可能会影响最终的或结果,也可能不会有影响。为了评估影响和定位出错的根因,工程师需要研究在各种交换的可能下,最终的或结果发生改变的情况有多少种。

输入格式

第一行输入一个正整数N(1≤N≤1000000)。

第二行输入一个长度为N的二进制数,表示会发生比特交换的第一个输入数。

第三行输入一个长度为N的二进制数,表示不会发生比特交换的第二个输入数。

输出格式

输出一个整数,表示会影响或结果的交换方案个数。

样例1

输入:

3
010
110

输出:

1

说明:

  • 原本010和110的或结果是110
  • 第一个输入数可能发生三种交换:
    1. 交换第1、2位:100,结果110,不变
    2. 交换第1、3位:010,结果110,不变
    3. 交换第2、3位:001,结果111,改变
  • 只有一种交换会改变计算结果

样例2

输入:

6
011011
110110

输出:

4

说明:

  • 原本011011和110110的或结果是111111
  • 以下交换会影响结果:
    1. 交换第1、3位:110011,结果110111
    2. 交换第1、6位:111010,结果111110
    3. 交换第3、4位:010111,结果110111
    4. 交换第4、6位:011110,结果111100
  • 其他交换不会影响结果,共4种

题解

本题可以使用统计法解决:

  1. 对于bin2中值为1的位,不管bin1对应位如何交换,结果都为1,可以忽略
  2. 只需关注bin2中值为0的位:
    • 若bin1对应位为0,需要和bin1中值为1的位交换才能改变结果
    • 若bin1对应位为1,需要和bin1中值为0的位交换才能改变结果
  3. 统计:
    • x:bin2为0且bin1为0的位数
    • y:bin2为0且bin1为1的位数
    • a:bin1中1的总数
    • b:bin1中0的总数
  4. 结果为:xa + yb - x*y

时间复杂度:O(n),其中n为二进制串长度。

参考代码

# 读取输入
n = int(input())
bin1 = input()
bin2 = input()

def getResult(n, bin1, bin2):
    # 统计各种情况的数量
    x = 0  # bin2为0且bin1为0的位数
    y = 0  # bin2为0且bin1为1的位数
    a = 0  # bin1中1的总数
    b = 0  # bin1中0的总数
    
    for i in range(n):
        if bin1[i] == '0':
            b += 1
            if b

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

算法刷题笔记 文章被收录于专栏

本专栏收集并整理了一些刷题笔记

全部评论

相关推荐

03-24 13:24
已编辑
江西农业大学 后端工程师
最近或许大家都听说xxxx厂裁员,无论前端,后端,大数据,测试,运维,人人可危, “前端死了,后端也死了,JAVA崩盘了,你们这群搞大模型的真是码奸”这次AI真的会让我们无路可走吗????????太阳底下已经没有新鲜事了旧的生产力的消失,必然有新的生产力诞生马车夫消失 → 汽车司机、修车工、石油工业诞生,从业人数是马车夫的百倍手工纺织女工消失 → 纺织机械工程师、面料设计师诞生,纺织品产量提升百倍2007年苹果开放 App Store,"移动端开发者"这个职业压根不存在。八年后,全球应用经济规模突破 1000亿美元,凭空诞生了数百万开发者岗位。每一次"这次真的完了...
二十岁的编程男神王大...:那这个时代是什么时代呢? 是全员agent的时代,是前端+AI,后端+AI的时代,AI已经融入了项目生命周期的的每一个角落,那我最近在做的东西举例,检查BUG时,我们会用codex,CC等工具的skill去check,效果好还能直接fix,测试的时候,apifox等工具已经有了AI落地的改造,CI/CD阶段,我们会根据hook去跑AI check脚本,就连不少中间件,也迎来了AI落地的改造,(AI网关,AI在MQ中的运用),都可以去了解下 另外记着,这些东西不是意义,工作只是谋生的一个手段,ai是让开发提效了,但是呢,原先一周的工作流程压缩到了两天内,同时低级的都裁员了,只有高级的去维护,你看似写的大义凛然,或许那天你也会成为你文章里面拒绝往前走的人,你才大二,面对技术有热情是对的
AI求职实录
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务