#include <iostream> using namespace std; int main() {     long n;     cin>>n;     long long res=0;     long t=2;//用t表示2^k     int count=0;     while(count<n/2)     {         for(long i=1;t*i<=n;i=i+2)//找到2^k*i<=n的所有i         {             res=res+i;             count++;           }         t=t*2;     }     if(n%2==0) //当n为奇数时,序列中的奇数和     {         res=res+n*n/4;                 }     else//当n为偶数时,序列中的奇数和     {         res=res+(n+1)*(n+1)/4;             }     cout<<res<<endl;     return 0; }
点赞 评论

相关推荐

点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务