Tricky Sum

来源:互联网 发布:水滴筹靠谱吗 知乎 编辑:程序博客网 时间:2024/06/03 16:40

点击打开链接

                                   Tricky Sum


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 are20, 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 ofn to be processed.

Each of next t lines contains a single integern (1 ≤ n ≤ 109).

Output

Print the requested sum for each of t integersn given in the input.

Example
Input
241000000000
Output
-4499999998352516354
Note

The answer for the first sample is explained in the statement.

题解:思路就是先把全部的和算出来,然后再减去2的幂次方的数就行了(2的幂次方单独算)

#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<cstdlib>#include<iostream>using namespace std;struct P{int star;int endd;}num[900000];bool cmp(P a,P b){return a.endd<b.endd;}int main(){int n,k,p;while(scanf("%d",&n)!=EOF){k=1;for(int i=0;i<n;i++){scanf("%d%d",&num[i].star,&num[i].endd);}sort(num,num+n,cmp);p=num[0].endd;for(int i=1;i<n;i++){if(num[i].star>p){k++;p=num[i].endd;}}printf("%d\n",k);}return 0;}