forked from sureshmangs/Code
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path598A - Tricky Sum.cpp
59 lines (38 loc) · 1.06 KB
/
598A - Tricky Sum.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/*
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 and 22 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
inputCopy
2
4
1000000000
outputCopy
-4
499999998352516354
Note
The answer for the first sample is explained in the statement.
*/
#include<bits/stdc++.h>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t;
cin >> t;
while (t--) {
long long n;
cin >> n;
long long k = (long long)log2(n);
long long res = (n * (n + 1)) / 2;
long long twos = (long long)pow(2, k + 1) - 1;
res = res - 2 * twos;
cout << res << "\n";
}
return 0;
}