Educational Codeforces Round 1 A
In this problem you are to calculate the sum of all integers from 1 to n, but you should take all powers of two with minus in the sum.
For example, for n = 4 the sum is equal to - 1 - 2 + 3 - 4 = - 4, because 1, 2 and 4 are 20, 21 and22 respectively.
Calculate the answer for t values of n.
Input
The first line of the input contains a single integer t (1 ≤ t ≤ 100) — the number of values of n to be processed.
Each of next t lines contains a single integer n (1 ≤ n ≤ 109).
Output
Print the requested sum for each of t integers n given in the input.
Examples
input
2
4
1000000000
output
-4
499999998352516354
Note
The answer for the first sample is explained in the statement.
题意:2,4,这种是2的次方数,我们是减去,其他是加
解法:先全部加起来,再一个个减去2的倍数就好了
1 #include<stdio.h> 2 //#include<bits/stdc++.h> 3 #include<string.h> 4 #include<iostream> 5 #include<math.h> 6 #include<sstream> 7 #include<set> 8 #include<queue> 9 #include<vector> 10 #include<algorithm> 11 #include<limits.h> 12 #define inf 0x3fffffff 13 #define lson l,m,rt<<1 14 #define rson m+1,r,rt<<1|1 15 #define LL long long 16 using namespace std; 17 int main() 18 { 19 int t; 20 __int64 n; 21 __int64 sum=0; 22 __int64 a=0; 23 int ans=1; 24 cin>>t; 25 while(t--) 26 { 27 ans=1; 28 sum=0; 29 a=0; 30 cin>>n; 31 sum+=(1+n)*n/2; 32 //cout<<sum<<endl; 33 while(ans<=n) 34 { 35 sum-=2*ans; 36 ans=2*ans; 37 } 38 // cout<<a<<endl; 39 cout<<sum<<endl; 40 } 41 return 0; 42 }