错点:要先变成double再变成int输出才不WA
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int t,n;
while (cin>>t)
{
while (t--)
{
cin>>n;
double s = pow(2,n-1)/2*(n+1); //pow(2,n-1)/2*(n-1)+pow(2,n-1)合并同类项
cout<<(int)s<<endl; //2进制有pow(2,n-1)个数字,第一位一定是1有pow(2,n-1)个1,有(n-1)个位数,其中0和1各占一半
}
}
return 0;
}
本文介绍了一种通过计算公式快速得出二进制数中1出现次数的方法,并使用C++编程语言实现。核心思路在于利用数学公式简化计算过程,通过pow函数计算2的n次方,进而得出指定长度二进制数中1的总数。
1729

被折叠的 条评论
为什么被折叠?



