【codeforces】(等差数列及等比数列求和)

原创 2016年05月30日 19:17:34

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 12 and 4 are 2021 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.

思路:先求从1到n的等差数列的和(d=1)sum1,在求从1到m等比数列的和(q=1)(m<=2^n)sum2;

答案即为sum1-2*sum2;

#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
	int n;
	scanf("%d",&n);
	while(n--)
	{
		int i;
		__int64 m,sum,sum1=0,sum2=0;
		scanf("%I64d",&m);
	    sum1=(m+1)*m/2;
	    int l;
		for(i=0;;i++)
		{
			if(pow(2,i)==m)
			{
				l=i;
				break;
			}
			 if(pow(2,i)>m)
			{
				l=i-1;
				break;
			}
		}
		sum2=pow(2,l+1)-1;
		sum=sum1-2*sum2;
		printf("%I64d\n",sum);
	}
 } 


版权声明:本文为博主原创文章,未经博主允许不得转载。

R语言基础编程技巧汇编 - 12

1.      文件重命名 file.rename() 2.       画图的par()函数变回默认值 device.off()   3.       apply函数加额外参数 x apply(x...
  • liu7788414
  • liu7788414
  • 2015年04月02日 21:06
  • 1221

赚钱买房(java大数+逆元+等比数列求和+快速幂)

这一题的思想就是等比数列求和,求和过程中需要用到快速幂方法! 求完和之后对这个数求模!求模用到了逆元,什么是逆元呢? 今天我们来探讨逆元在ACM-ICPC竞赛中的应用,逆元是一...
  • baidu_23955875
  • baidu_23955875
  • 2015年07月06日 19:03
  • 585

C语言 - ACM题目:数列(等差或等比数列)

题目: 小明有天在做数学题,碰到这样一个问题,只告诉你一个数列的前三个数,并且这个数列一定是等差数列或等比数列中的一种,问你这个数列的第k个数是什么。现在请你编 程帮小明解答这个问题。 输入格...
  • u012495182
  • u012495182
  • 2013年12月08日 00:08
  • 1821

矩阵经典题目三:poj 3233 Matrix Power Series(等比矩阵求和)

http://poj.org/problem?id=3233 ps转: 用二分方法求等比数列前n项和:即   原理:   (1)若n==0   (2)若n%2==0     ...
  • u013081425
  • u013081425
  • 2014年06月12日 17:13
  • 1222

等比数列求和

快速求出      (1)当时, (2)当时,那么有      (3)当时,那么有...
  • w20810
  • w20810
  • 2015年02月03日 21:36
  • 334

算法学习之寻找最长等差数列

最长等差数列就是在一个数组中,组成等差数列的最长的那一个,首先我们对数组排序,然后我们一般会先想到暴力法从第一个开始循环遍历整个数组,时间复杂度O(N^3),下面给出伪代码 ...
  • a7980718
  • a7980718
  • 2016年02月24日 12:32
  • 702

等比数列二分求和

今天我们学习如何有效地求表达式的值。对于这个问题,用二分解决比较好。   (1)当时, (2)当时,那么有      (3)当时,那么有...
  • u013008291
  • u013008291
  • 2014年08月23日 13:19
  • 390

等比数列求和+逆元——算

用一个美丽的高一数学公式 就可以把这个假·O(N*M)的题优化为真·O(N)算法 注意:因为所求答案是模意义下的 所以需要一个O(N)的线性推逆元算法...
  • qq_39668763
  • qq_39668763
  • 2017年11月09日 21:13
  • 53

POJ1845Sumdiv(逆元or等比数列求和)

附上Acdreamer的讲解:http://blog.csdn.net/acdreamers/article/details/8220787 题目:http://poj.org/problem?i...
  • Rain722
  • Rain722
  • 2017年05月02日 14:52
  • 225

等比数列二分求和

AcDreamer博客原文链接:http://blog.csdn.net/acdreamers/article/details/7851144 二分解决自然是因为幂次太大,用公式远超...
  • Rain722
  • Rain722
  • 2017年04月30日 19:28
  • 134
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【codeforces】(等差数列及等比数列求和)
举报原因:
原因补充:

(最多只允许输入30个字)