CF1080B题解

题目传送门

由于题目有了样例解释,所以直接上思路。

显而易见,由于 a=1,2,3,4,...a={-1,2,-3,4,...},所以设 sumisum_i 为前 ii 个数的和,则

ai=i×(1)ia_i=i\times(-1)^i

所以 ai+ai1(imod2=0)=i(i1)=ii+1=1a_i+a_{i-1}(i\mod 2=0)=i-(i-1)=i-i+1=1

所以 sumi(imod2=0)=1+1++1=i2sum_i(i\mod 2=0)=1+1+\cdots+1=\frac{i}{2}

ii 为奇数呢?

众所周知,sumi=sumi+1aisum_i=sum_{i+1}-a_i

由此写出代码。

#include<iostream>
using namespace std;
int main(){
	int n,l,r,ans1,ans2;
	cin>>n;
	while(n--){
		cin>>l>>r;
		if(r%2)ans2=(r+1)/2-(r+1);
		else ans2=r/2;
		if(l%2)ans1=(l-1)/2;
		else ans1=l/2-l;
		cout<<ans2-ans1<<endl;
	}
	return 0;
}
posted @ 2023-02-26 14:31  Weslie_qwq  阅读(12)  评论(0)    收藏  举报  来源