第一行一个整数N。
输出一个整数表示答案
1
0
1! = 1,最低位的1在0位置上
2
2 != 2,最低位的1在1位置上
1000000000
999999987
#include <bits/stdc++.h> using namespace std; int main(){ long long s = 0; long n; cin>>n; while(n){ s += (n>>1); n >>= 1; } cout<<s<<endl; return 0; }
#include<bits/stdc++.h> using namespace std; int main() { long long n,res=0; cin>>n; while(n){ res+=(n>>1); n>>=1; } cout<<res<<endl; return 0; }
public long Count(long N) { long sum=0; while(N) { sum+=N/2; N=N/2; //或者N=N>>1; } return sum; }
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题