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 @   Weslie_qwq  阅读(3)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示