本文共 711 字,大约阅读时间需要 2 分钟。
【题目】
TimeLimit:1000MS MemoryLimit:128MB
64-bit integer IO format:%lld
已解决 |
×
收藏题目
备注
Close确定
| 已有3人收藏了本题
Problem Description
有一串奇怪数列如下:1 2 -3 4 -5 -6 -7 8 -9 ...
即从1-n,碰到2的次方倍则显正,其他则是负数。(2的整次方包括:1,2,4,8,16,32,64,128,....) 现在给你一个n,求出,这个数列的和。Input
有多个输入样例,每个测试样例输入一个n,0 < n < = 1000.
该题不懂格式的可以参照一下格式:#includeint main(){ ... while(scanf("%d",&n)!=EOF){ ... } return 0; }
Output
对于每一组测试数据,输出一个整数,表示这个数列的前n项的和
SampleInput
2 3 4
SampleOutput
3 0 4
【题解】
对于任意2的整次方n,n&(n-1)=0。
比如4:100,4-1=3:011,100&011=000
【代码】
int main(){ int c=0; int n; while(cin>>n) { int sum=0; for(int i=1;i<=n;i++) if((i&(i-1))) sum-=i; else sum+=i; cout<<
转载地址:http://myben.baihongyu.com/