华为-查找输入整数二进制中1的个数
原创
©著作权归作者所有:来自51CTO博客作者ReignsDu的原创作品,请联系作者获取转载授权,否则将追究法律责任
题目链接
https://www.nowcoder.com/practice/1b46eb4cf3fa49b9965ac3c2c1caf5ad?tpId=37&tqId=21285&tPage=4&rp=&ru=/ta/huawei&qru=/ta/huawei/question-ranking
题目描述
请实现如下接口
public static int findNumberOf1( int num)
{
/* 请实现 */
return 0;
} 譬如:输入5 ,5的二进制为101,输出2
涉及知识点:
输入描述:
输出描述:
示例1
输入
复制
输出
复制
题解:
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int n;
while (cin >> n){
int ans = 0;
long bisize[33];
for(int i = 0; i < 33; i++){
bisize[i] = pow(2, i);
}
int l = 32;
while(n > 0){
if(n >= bisize[l]){
n -= bisize[l];
ans++;
}
l--;
if(l < 0){
break;
}
}
cout << ans << endl;
}
return 0;
}
做别的题想到上面算法太sb了。。
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int n;
while (cin >> n){
int ans = 0;
while (n > 0) {
ans += n % 2;
n /= 2;
}
cout << ans << endl;
}
return 0;
}