关闭

求和减2的次方

156人阅读 评论(0) 收藏 举报
分类:
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.

代码:

#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.其余的数直接用求和公式


0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

如何判断一个数是否为2的N次方

题目:给定一个整数num,判断这个整数是否是2的N次方。比如,2,4,8是2的那次方,6,10不是2的N次方。 请看下面的程序: public static bool Check1...
  • xiangyong58
  • xiangyong58
  • 2013-03-14 18:16
  • 7679

C/C++ 编程计算2的100万次方(m的n次方),超长结果输出文件

C/C++ 编程计算2的100万次方(m的n次方),超长结果输出文件
  • w442863748
  • w442863748
  • 2016-03-25 10:30
  • 1876

2的幂次方表示题解

8758:2的幂次方表示 总时间限制: 1000ms 内存限制: 65536kB 描述 任何一个正整数都可以用2的幂次方表示。例如:     137=27+23+20 同时约定方次...
  • MrH929
  • MrH929
  • 2016-01-25 08:57
  • 1780

【数学】-1的根号二次方等于多少?

突然发现我这博客咋啥都开始写了呢。。。 上微积分课胡思乱想系列。。。显然这个东西在数学上是没有定义的。 包括−1-1的13\frac13次方这样的东西,数学上的定义也挺模糊的 不过我们可以想想这...
  • PoPoQQQ
  • PoPoQQQ
  • 2016-10-28 16:26
  • 1731

2的N次幂表示

问题描述   任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001。   将这种2进制表示写成2的次幂的和的形式,令次幂高的排在前面,可得到如下表达式:137=2^7+2^...
  • xukun5137
  • xukun5137
  • 2015-06-03 18:47
  • 701

2的n次幂的Java实现

首先扯点别的:今天上海下雨了,不大,空气很清新,温度也很舒适,今晚可以睡个好觉了。 今天总结一些2的n次幂的算法实现,只讨论n>=0的情况。 如果n比较小的话,可以这样实现。 private s...
  • leilifengxingmw
  • leilifengxingmw
  • 2017-05-24 08:57
  • 1077

2的幂次方表示题解

描述 任何一个正整数都可以用2的幂次方表示。例如:     137=27+23+20 同时约定方次用括号来表示,即ab可表示为a(b)。由此可知,137可表示为:     2(...
  • sonovain
  • sonovain
  • 2016-01-24 20:51
  • 3021

2的次幂 -- 程序员大数计算必备

最近做IPV6,需要将IPV6转换成一个大数,方便操作。因为ipv6格式是128位,传统处理方式已经不起作用,只要找来大数运算的东东,贴出2的1000以内次幂的值,大家可以参考。
  • timebomb
  • timebomb
  • 2013-11-27 09:27
  • 7378

任何一个正整数都可以用2的幂次方表示

例如:137=2^7+2^3+2^0,约定a^b可表示为a(b),则137可表示为:2(7)+2(3)+2(0),进一步7=2^2+2+2^0,3=2+2^0。所以137最终可以表示为2(2(2)+2...
  • u011954296
  • u011954296
  • 2016-03-31 19:57
  • 1826

c、c++求a的n次方(a是个位0~9)

首先介绍一下基础的,关于数据类型: 其中,整型的数据大小为4字节,32比特位,能表示的数的范围是 -2147483648 ~ +2147483647;而2的30次方就高达 1073741824,用...
  • summer_awn
  • summer_awn
  • 2017-06-18 14:27
  • 484
    个人资料
    • 访问:35912次
    • 积分:2744
    • 等级:
    • 排名:第15140名
    • 原创:248篇
    • 转载:13篇
    • 译文:0篇
    • 评论:4条