(CodeForces - 598A)Tricky Sum
2017-09-07 07:55
302 查看
(CodeForces - 598A)Tricky Sum
time limit per test:1 secondmemory limit per test:256 megabytes
input:standard input
output:standard output
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
Input
24
1000000000
Output
-4499999998352516354
Note
The answer for the first sample is explained in the statement.题目大意:给出数字n,求和,其中遇到2的指数次应该减到,例如n=4,则sum=-1-2+3-4=-4.
思路:先根据求和公式求出1……n的和sum=n*(n+1)/2,再减去2的指数次的两倍(因为之前多加了一次,而要求是减去,所以总共需要减去2倍)。
#include<cstdio> using namespace std; typedef long long LL; int main() { int T; scanf("%d",&T); while(T--) { LL n,sum; scanf("%lld",&n); sum=n*(n+1)/2; for(int i=0;(1<<i)<=n;i++) sum-=1<<(i+1); printf("%lld\n",sum); } return 0; }
相关文章推荐
- 【CodeForces】[598A]Tricky Sum
- CodeForces 598A--Tricky Sum
- 【Codeforces 598A】 Tricky Sum
- CodeForces 598A- Tricky Sum
- Tricky Sum【数学】CodeForces 598A
- 【CodeForces - 598A】Tricky Sum
- 【CodeForces】598A - Tricky Sum
- CodeForces 598A (水题)
- CodeForces 598A(水)
- 【CodeForces】598A - Tricky Sum(计数)
- 【codeforces】-598A-Tricky Sum(数列求和,2的幂为负)
- 【codeforces】Tricky Sum
- 【codeforces】Tricky Sum
- CodeForces 598 A Tricky Sum【数学】
- CodeForces 598A:Tricky Sum【数学】
- 【CodeForces 598A】Tricky Sum(计数)
- CodeForces - 598A
- Codeforces--598A--Tricky Sum(数学)
- Codeforces--598A--Tricky Sum(数学)
- Codeforces 601A The Two Routes