第一题想到个方法,用纯真值表和位运算做,考虑单个位置: 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; } 没验证过其他的,可以帮我测一下
点赞 评论

相关推荐

不愿透露姓名的神秘牛友
昨天 15:39
点赞 评论 收藏
分享
湫湫湫不会java:先投着吧,大概率找不到实习,没实习的时候再加个项目,然后把个人评价和荣誉奖项删了,赶紧成为八股战神吧,没实习没学历,秋招机会估计不多,把握机会。或者说秋招时间去冲实习,春招冲offer,但是压力会比较大
点赞 评论 收藏
分享
05-21 15:47
门头沟学院 Java
浪漫主义的虹夏:项目有亮点吗,第一个不是纯玩具项目吗,项目亮点里类似ThreadLocal,Redis储存说难听点是花几十分钟绝大部分人都能学会,第二个轮子项目也没体现出设计和技术,想实习先沉淀,好高骛远的自嗨只会害了自己
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务