1. 程式人生 > >CF1080B Margarite and the best present

CF1080B Margarite and the best present

題目:Margarite and the best present


思路:

其實我們可以先列個表看看的——


a_i       -1  2 -3  4 -5  6 -7  8 -9 10
sum_i     -1  1 -2  2 -3  3 -4  4 -5  5   //sum是a的字首和

找個規律——

發現 s u m i

= i 1 2
× ( 1 ) i sum_i=\left\lfloor\dfrac{i-1}{2}\right\rfloor × (-1)^i

然後就可以求出 s u m L sum_L s u m R sum_R 了,相減即可。


程式碼:

#include<bits/stdc++.h>
using namespace std;

#define read(x) scanf("%d",&x)

int main() {
	int T;
	read(T);
	while(T--) {
		int L,R;
		read(L),read(R);
		printf("%d\n",((R+1)/2*((R&1)?-1:1))-((L)/2*((L&1)?1:-1)));
	} 
	
	return 0;
}