gpt4 book ai didi

c++ - 给定一个整数N> 0,区间[0,2 ^ N)中有多少个整数恰好有N-1个设置位?编写返回正确答案的简短函数

转载 作者:行者123 更新时间:2023-12-01 14:40:18 25 4
gpt4 key购买 nike

我编写了一些C++代码来解决此问题:

#include <iostream>
#include <cmath>
using namespace std;

unsigned int countSetBits(unsigned int n)
{
int totalCount = 0, i;
int cond = n-1;
for(i=0;i<pow(2,n);i++){
unsigned int count = 0;
while (i) {
count += i & 1;
i >>= 1;
}
if(count == cond){
totalCount++;
}

}
return totalCount;
}

int main()
{
int n=5;
cout<<countSetBits(5);

return 0;
}
尽管它编译成功,但是不打印任何内容。
我不知道问题出在哪里...

最佳答案

笔和纸解决方案:

N=2  2^N-1 = 0b11    Possible integers with 1 bit set:
01
10
N=3  2^N-1 = 0b111   Possible integers with 2 bits set:
011
101
110
N=4  2^N-1 = 0b1111  Possible integers with 3 bits set:
0111
1011
1101
1110

因此, N似乎是答案。

关于c++ - 给定一个整数N> 0,区间[0,2 ^ N)中有多少个整数恰好有N-1个设置位?编写返回正确答案的简短函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58826214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com