求和减2的次方
2016-05-30 20:28
435 查看
Description
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.
Sample Input
Input
2
4
1000000000
Output
-4
499999998352516354
Hint
The answer for the first sample is explained in the statement.
代码:
思路:一个for循环判断是不是2的次方,不用i++,直接i=2*i.其余的数直接用求和公式
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.
Sample Input
Input
2
4
1000000000
Output
-4
499999998352516354
Hint
The answer for the first sample is explained in the statement.
代码:
#include<iostream> #include<stdio.h> #include<math.h> #include<algorithm> #include<string.h> using namespace std; int main() { int n; while(scanf("%d",&n)!=EOF) { while(n--) { long long a,i,ans=0; scanf("%lld",&a); for(i=1;i<=a;i=i*2) { ans-=2*i; } ans+=(a*(a+1)/2); printf("%lld\n",ans); } } return 0; }题意:给你一个数n,计算从一到n的整数和。不过如果其中的数是2的x次方时,不仅不加而且要减去。输出总和。
思路:一个for循环判断是不是2的次方,不用i++,直接i=2*i.其余的数直接用求和公式
相关文章推荐
- poj 2286
- Easy-题目37:111. Minimum Depth of Binary Tree
- QT——2、Hello World
- Android 4000 学习记录(十九)-简单的动画清除
- Easy-题目36:112. Path Sum
- .m 文件与.mm文件的区别
- Java代码实现AP向CP侧发送AT指令
- Easy-题目35:9. Palindrome Number
- 反转链表17
- 2016SDAU课程练习三1013
- 搜集整理java中GC的理解
- java 基于jxl解析xls以及解决丢失精度问题
- mysql 锁表解锁
- 十四周项目-项目3-数组类模板
- 持续集成(上)
- linux学习笔记2 - linux常用命令
- 设计模式学习笔记--迭代器模式
- 查看文件大小命令
- 自动化测试之uiautomator
- 求string字符串长度