我不是酸菜鱼

简化题意:
n个数相乘得到数g,求g二进制下后导0的个数

考虑把n个数都换成二进制,模拟二进制相乘即可发现规律
答案即是n个数的二进制下后导0的个数相加

证明

我们假设2个数相乘,分别是20,22
首先将他们2个转为二进制

  • 20:10100
  • 22:10110

我们再模拟二进制下的相乘
二进制下的相乘
可以发现得出的数的二进制下后导0即是相乘的两个数的二进制下后导0数量之和

参考代码

#include<bits/stdc++.h>
using namespace std;
int n,x,ans;
int main()
{
    cin>>n;
    while(n--){
        scanf("%d",&x);
        while(x) (x&1)?x=0:ans++,x>>=1;
    }
    cout<<ans<<"\n";
    return 0;
}
全部评论

相关推荐

08-04 22:37
桂林学院 Java
花律:看着感觉不差的,实习还是要看点运气,如果不介意可以试试外包实习,我的简历比楼主都差,都可以进
投递BOSS直聘等公司10个岗位
点赞 评论 收藏
分享
06-25 09:33
厦门大学 Java
球球别拷打俺了:现在日常估计没啥hc了,等到八月多估计就慢慢有了。双九✌🏻不用焦虑的
投递快手等公司10个岗位
点赞 评论 收藏
分享
08-07 11:58
门头沟学院 Java
投实习的时候大厂只有你给面现在攻守易型了是吧挂的这么果断,连面都不给...
迷茫的大四🐶:实习是实习,正职是正职,两码事,实习也就几个月,卡的少,正职可就得狠狠地卡了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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