题目:
点击打开链接
求等差数列和再减去1~n内为2的整数次幂的值的2倍
#include <stdio.h>
#include <math.h>
#define ll long long int
ll Sum(ll n)
{
return (n + n*(n-1)/2);
}
int main()
{
int T;
ll ask, res;
scanf("%d", &T);
while(T--)
{
scanf("%I64d", &ask);
res = Sum(ask);
//printf("%lld %lld\n", ask, res);
for(int i = 0;i <= 30;i++){
ll tmp = pow(2, i);
//
if(tmp <= ask){
res -= 2*tmp;
}
}
printf("%I64d\n", res);
}
}