CodeForces 598A Tricky Sum

水题。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<algorithm>
using namespace std;

long long b[32];

void f()
{
    b[0]=1;
    for(int i=1;i<=30;i++) b[i]=2*b[i-1];
}

int main()
{
    f();
    int T; scanf("%d",&T);
    while(T--)
    {
        long long n; 
        scanf("%lld",&n);
        long long ans=(1+n)*n/2;
        for(int i=0;i<=30;i++)
            if(b[i]<=n) ans=ans-b[i]-b[i];
        printf("%lld\n",ans);
    }
    return 0;
}

 

posted @ 2016-05-07 20:44  Fighting_Heart  阅读(106)  评论(0编辑  收藏  举报