题目
原题链接:A. Tricky Sum
题意
从1~n累加,若遇到2的指数,则减去,求最后的和。参考了其他作者的代码。
代码
#include<bits/stdc++.h>
using namespace std;
int main() {
long long n,ans;
int t,tmp;
scanf("%d",&t);
while(t--){
scanf("%lld",&n);
ans=n*(n+1)/2;
tmp=1;
while(n){
ans-=2*tmp;
tmp*=2;
if(n==1) break;
n/=2;
}
printf("%lld\n",ans);
}
return 0;
}