找规律
$O(n)$
左边区间l的值实际上是其前一位的值,右边区间为其原本区间值,然后判断l和r是否会被2整除,根据奇数为负,偶数为正把l和r作相应变换,最后ans=r-l;输出答案即可。
C++ 代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,l,r; scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d%d",&l,&r);
if(l-1==0) l=0;
else if(l%2==0) l=-l/2;
else l=(l-1)/2;
if(r%2==0) r=r/2;
else r=-(r+1)/2;
int ans=r-l;
printf("%d\n",ans);
}
return 0;
}