问题标题: 酷町堂:萌新求助5230 1--n求和

0
0
已解决
汪恺恒
汪恺恒
中级启示者
中级启示者

题目描述 Description

给出一个n,让你求出从1到n的和,但是如果其中一个数是2的次幂时,就要变加为减。

【背景知识】等比数列求和公式:
image.png

输入描述 Input Description

第一行一个整数t,接下来t行每行一个整数n

输出描述 Output Description

输出 t 行,每行一个整数

样例输入 Sample Input

1

4

样例输出 Sample Output

-4

 

WA8个点求助

#include<iostream> 
#include<bits/stdc++.h>
#pragma GCC optimize(3)
using namespace std;
int n,t;
long long ans;
int main(){
	cin>>t;
	while(t--){
		cin>>n;
		ans=n*(n-1)/2+n;
		long long x=1;
		while(x<=n){
			ans-=x*2;
			x*=2;
		}
		cout<<ans<<endl;
	}
    return 0;
}

 

汪恺恒在2021-02-09 08:49:21追加了内容

已自行解决,采纳丁博阳


0
0
汪宇航
汪宇航
新手启示者
新手启示者

t--,这不会变成负数吗?

0
0
0
我要回答