关注
第一题想到个方法,用纯真值表和位运算做,考虑单个位置:
a=1,b=1 c=0需要两次 c=1不需要
a=0,b=1 c=0需要一次 c=1不需要 (同a=1,b=0)
a=0,b=0 c=0不需要 c=1需要一次
因为位运算没有2,所以拆成两个数计算次数
举例d=(a^c)&(b^c)
a=1,b=1 c=0,d=1 c=1,d=0
a=0,b=1 c=0,d=0 c=1,d=0 (同a=1,b=0)
a=0,b=0 c=0,d=0 c=1,d=1
e同理,
a=1,b=1 c=0,e=1 c=1,e=0
a=0,b=1 c=0,e=1 c=1,e=0 (同a=1,b=0)
a=0,b=0 c=0,e=0 c=1,e=0
不要觉得d、e奇怪,使用ac、bc真值表凑的
public Integer cal(Integer a,Integer b,Integer c) {
int ab = a|b,counter=0,
d=(a^c)&(b^c),lastD,
e=(ab)^c&(ab),lastE;
while(d!=0){
lastD = d % 2;
if(lastD==1)
counter++;
d = d >> 1;
}
while(e!=0){
lastE = e % 2;
if(lastE==1)
counter++;
e = e >> 1;
}
return counter;
}
没验证过其他的,可以帮我测一下
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 怎么给家人解释你的工作? #
11198次浏览 74人参与
# 应届生被毁约被毁意向了怎么办 #
46009次浏览 280人参与
# 快手技术岗信息交流阵地 #
3268次浏览 28人参与
# 你的mentor是什么样的人? #
16136次浏览 110人参与
# 牛客周边新品开箱 #
10349次浏览 90人参与
# 帮我看看,领导说这话什么意思? #
20921次浏览 98人参与
# 求职中的尴尬瞬间 #
3842次浏览 42人参与
# 牛友的志愿填报指南 #
34877次浏览 185人参与
# 国企还是互联网,你怎么选? #
170025次浏览 1273人参与
# 牛客树洞,我想对你说 #
8966次浏览 97人参与
# 机械人集合!你是什么工程师? #
19846次浏览 91人参与
# 如何KTV领导 #
72630次浏览 502人参与
# 大疆工作体验 #
18716次浏览 85人参与
# 今年形式下双非本找得到工作吗 #
237549次浏览 1433人参与
# 三一集团提前批进度交流 #
38352次浏览 225人参与
# 求职低谷期你是怎么度过的 #
12765次浏览 250人参与
# 26届秋招公司红黑榜 #
28166次浏览 115人参与
# 校招泡的最久的公司是哪家? #
12891次浏览 82人参与
# 从哪些方向判断这个offer值不值得去? #
16929次浏览 189人参与
# 得物app工作体验 #
28341次浏览 66人参与
# 大厂无回复,继续等待还是奔赴小厂 #
248071次浏览 1634人参与
