0
已解决
汪恺恒
中级启示者
中级启示者
题目描述 Description
给出一个n,让你求出从1到n的和,但是如果其中一个数是2的次幂时,就要变加为减。
【背景知识】等比数列求和公式:
输入描述 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追加了内容
已自行解决,采纳丁博阳