题目描述
求数列-1, 2, -3, 4, -5…任意区间总和
题目分析
-
判断区间起始位置
l
的奇偶性,若为偶数,则偶奇交替,一对奇偶和为1,反之为-1 -
然后计算区间内元素对数
(r - l + 1) / 2
,区间元素个数为r - l +1
,如果区间内总数为偶数,必然是一正一负刚好成对。如果为奇数,需要判断区间右端点r
位置数字奇偶性,并加到sum上。
代码示例
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
while(n--){
int l,r;
int sum = 0;
cin>>l>>r;
int k = r-l+1 >>1; //区间内对数
if(l&1) sum = k;
else sum = -k;
if((r-l+1)&1){
if(r&1) sum -= r;
else sum+=r;
}
cout<<sum<<endl;
}
return 0;
}