题意:就是1-n累加,凡是2^x=n[i]就加-n[i]。
思路:数列求和,对于满足2^x=n[i]的最后减去2 n[i]。
代码:
/*=============================AC情况===============================*/
/*题目网址: */
/*时间:
2016年6月5日09:19:56 ans,n数据类型用 double 第二组数据后三位错误
2016年6月5日09:27:17 .............用 __int64 AC*/
/*心得: */
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define G 100
int main() {
int T;
__int64 ans,n;
scanf("%d",&T);
while(T--) {
scanf("%I64d",&n);
ans=n*(n+1)/2;
for(__int64 j=1; j<=n; j=j*2) {
ans=ans-2*j;
}
printf("%I64d\n",ans);
}
return 0;
}
/*********************************测试数据*********************************
2
4
1000000000
Output
-4
499999998352516354
**************************************************************************/