#define _DEBUG 0 #include #include #include #include int main(void) { int scan;//scanf警告用 int i,j; long long n;scan=scanf("%lld",&n); int bitcount=0; long long bit=n; while(bit) { if(bit%2)bitcount++; bit>>=1; } #if _DEBUG printf("bitcount = %d\n\n",bitcount); #endif long long nn=bitcount; long long rr; long long sum=0; long long nCr; for(i=1; i<=nn/2; i++) { // nCr=1; rr=nn-i; // long long loop; for(loop=1;loop<=rr;loop++) { nCr = nCr*(nn-loop+1)/loop; } // if(i==bitcount-i); else nCr*=2; // sum+=nCr; #if _DEBUG printf("i=%d, nn=%lld, r=%lld\n",i,nn,rr); printf("%dC%d=%lld\n",nn,rr,nCr); printf("sum=%lld\n\n",sum); #endif } printf("%lld",sum); return 0; }