【CodeForces - 598A】Tricky Sum
2017-07-30 11:04
267 查看
点击打开链接
Tricky
Sum
In this problem you are to calculate the sum of all integers from 1to 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, because1, 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.
Example
Input
Output
Note
The answer for the first sample is explained in the statement.
// 有些编译器不接受long long 所以用_int64 或头文件改成C++
//代码如下:
#include <cstdio>
int main()
{
long long int sum,mul,ans,k;
long long int n;
int t;
scanf ("%d",&t);
while(t--)
{
ans = 1;
mul = 1;
k = 1;
scanf ("%lld",&n);
sum = n * (n+1) / 2;
while (k <= n)
{
k*=2;
ans++;
}
// for (long long i = 1 ; i <= ans ; i++)
// {
// mul *= 2;
// }
k = k - 1;
sum = sum - 2*k;
printf ("%lld\n",sum);
}
return 0;
}
Tricky
Sum
In this problem you are to calculate the sum of all integers from 1to 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, because1, 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.
Example
Input
2 4 1000000000
Output
-4 499999998352516354
Note
The answer for the first sample is explained in the statement.
// 有些编译器不接受long long 所以用_int64 或头文件改成C++
//代码如下:
#include <cstdio>
int main()
{
long long int sum,mul,ans,k;
long long int n;
int t;
scanf ("%d",&t);
while(t--)
{
ans = 1;
mul = 1;
k = 1;
scanf ("%lld",&n);
sum = n * (n+1) / 2;
while (k <= n)
{
k*=2;
ans++;
}
// for (long long i = 1 ; i <= ans ; i++)
// {
// mul *= 2;
// }
k = k - 1;
sum = sum - 2*k;
printf ("%lld\n",sum);
}
return 0;
}
相关文章推荐
- CodeForces 598A- Tricky Sum
- 【Codeforces 598A】 Tricky Sum
- Tricky Sum【数学】CodeForces 598A
- 【CodeForces】598A - Tricky Sum
- (CodeForces - 598A)Tricky Sum
- 【CodeForces】[598A]Tricky Sum
- CodeForces 598A--Tricky Sum
- 【codeforces】Tricky Sum
- 【codeforces】Tricky Sum
- CodeForces 598 A Tricky Sum【数学】
- 【CodeForces 598A】Tricky Sum(计数)
- CodeForces 598A:Tricky Sum【数学】
- CodeForces 598A(水)
- CodeForces - 598A
- Codeforces--598A--Tricky Sum(数学)
- Codeforces--598A--Tricky Sum(数学)
- CodeForces 598A (水题)
- 【codeforces】-598A-Tricky Sum(数列求和,2的幂为负)
- 【CodeForces】598A - Tricky Sum(计数)
- CodeForces 27A Next Test(简单hash)