郑清楼上说的对

题目http://acm.zzuli.edu.cn/problem.php?id=2462

#include<stdio.h>
long long int  b[31] = {1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,262144,524288,1048576,2097152,4194304,8388608,16777216,33554432,67108864,134217728,268435456,536870912,1073741824};
int main()
{
	int t;long long n;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d",&n);long long sum=0;
		sum = n*(1+n)/2;int i=0;long long ff=0;
		while(b[i] <= n)
		{
			ff-=b[i];
			i++;
		}
		sum+=(2*ff);
		printf("%lld\n",sum);
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_43568078/article/details/85057579