一、题目
题目描述
求 有多少个是奇数
数据范围
二、解法
这道题只关乎奇偶性,所以可以默认模数为 ,我们尝试用 ,设 为 的二进制分解, 为 的二进制分解。
,那么我们必须要保证每一项都是 ,当 的那一位是 时, 只能取 ,但是 为 时 可以取 ,所以问题变成了求 的二进制分解的 的个数 ,然后输出 即可。
#include <cstdio>
int read()
{
int x=0,flag=1;char c;
while((c=getchar())<'0' || c>'9') if(c=='-') flag=-1;
while(c>='0' && c<='9') x=(x<<3)+(x<<1)+(c^48),c=getchar();
return x*flag;
}
int n,m;
signed main()
{
while(~scanf("%d",&n))
{
m=0;
while(n>0)
{
if(n&1) m++;
n/=2;
}
printf("%d\n",1<<m);
}
}