#include <bits/stdc++.h>
using namespace std;
#define int long long
int judge(int l, int r) {
if (l % 2 == 1 && r % 2 == 1) {
int n = r - l + 1; //之间数字个数
int ans = r + (n / 2) * (-1);
return ans;
}
if (l % 2 == 1 && r % 2 == 0) {
int n = r - l + 1;
int ans = (n / 2) * (-1);
return ans;
}
if (l % 2 == 0 && r % 2 == 1) {
int n = r - l + 1;
int ans = (n / 2);
return ans;
}
if (l % 2 == 0 && r % 2 == 0) {
int n = r - l + 1;
int ans = 1 * (n / 2) - r;
return ans;
}
return 0;
}
signed main() {
int t;
cin >> t;
while (t--) {
int l, r;
cin >> l >> r;
cout << judge(l, r) << endl;
}
return 0;
}
动用神奇的大脑和灵巧的手,就会发现奇偶之间相加只会出现两种结果,1或者-1,与此同时穷举四种可能出现的情况, 就会发现当【l % 2 == 0 && r % 2 == 0】时和当【l % 2 == 1 && r % 2 == 1】时,末尾往往会多出一个数字,基于这个想法,我们就可以暴力解出来答案啦。(前缀和的话会超出栈空间,只能通过部分样例)

京公网安备 11010502036488号