关注
第一题想到个方法,用纯真值表和位运算做,考虑单个位置:
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;
}
没验证过其他的,可以帮我测一下
查看原帖
点赞 评论
相关推荐
05-13 21:37
华南理工大学 机械类 点赞 评论 收藏
转发
03-21 09:44
Белорусский государственный университет 计算机类 点赞 评论 收藏
转发
牛客热帖
正在热议
# 牛客帮帮团来啦!有问必答 #
727516次浏览 11702人参与
# 非技术岗是怎么找实习的 #
74552次浏览 1394人参与
# 海康威视求职进展汇总 #
91396次浏览 1091人参与
# 浅聊一下我实习的辛苦费 #
81460次浏览 761人参与
# 如何写一份好简历 #
262686次浏览 3963人参与
# 硬件人求职现状 #
184725次浏览 2705人参与
# 通信硬件人笔面经互助 #
111348次浏览 2235人参与
# 面试等了一周没回复,还有戏吗 #
40527次浏览 500人参与
# 机械制造面试记录 #
37576次浏览 505人参与
# 24届营销人拿到了几个offer #
4227次浏览 62人参与
# 铜五铁六真的存在吗? #
28201次浏览 298人参与
# 实习生应该准时下班吗 #
76733次浏览 569人参与
# 打工人的辛酸 #
8601次浏览 134人参与
# 运营人的第一份offer应该如何选 #
35257次浏览 642人参与
# 美的求职进展汇总 #
38879次浏览 418人参与
# 如何看待offer收割机的行为 #
223886次浏览 3254人参与
# 产品实习,你更倾向大公司or小公司 #
36409次浏览 558人参与
# 数据人offer决赛圈怎么选 #
44757次浏览 727人参与
# 实习与准备秋招该如何平衡 #
171638次浏览 3106人参与
# 通信硬件薪资爆料 #
200309次浏览 1818人参与