时间限制: 1 Sec
内存限制: 128 MB
提交: 63 解决: 20
[ 提交][ 状态][ 讨论版]
提交: 63 解决: 20
[ 提交][ 状态][ 讨论版]
题目描述
QAQ有一个区间[L, R]。已知QAQ很喜欢长度为奇数的区间,现在请你告诉他有多少个长度为奇数的子区间。
对于区间[2 4]来讲,它的子区间有[2 2] [2 3] [2 4] [3 3] [3 4] [4 4]共6个。
为了简化题目,QAQ所给的区间里面全是非负整数。
对于区间[2 4]来讲,它的子区间有[2 2] [2 3] [2 4] [3 3] [3 4] [4 4]共6个。
为了简化题目,QAQ所给的区间里面全是非负整数。
输入
第一行输入一个整数T,代表有T组测试数据。
每组数据输入两个整数L,R,代表区间的端点。
注:1 <= T <= 1000000,0 <= L <= R <= 100000000。
每组数据输入两个整数L,R,代表区间的端点。
注:1 <= T <= 1000000,0 <= L <= R <= 100000000。
输出
对每组测试数据,输出一个整数代表长度为奇数的子区间个数。
样例输入
2
1 6
1 5
样例输出
12
9
举一个区间长度为偶数的例子:
1 -> 6
1 1 1 2 1 3 1 4 1 5 1 6 3
2 2 2 3 2 4 2 5 2 6 3 6
3 3 3 4 3 5 3 6 2
4 4 4 5 4 6 2 4
5 5 5 6 1
6 6 1 2
结果为2+4+6;
#include<cstdio> #include<algorithm> using namespace std; int main() { int T; long long L,R,sum,con; long long quL; scanf("%d",&T); while(T--) { scanf("%lld %lld",&L,&R); quL=R-L+1; if(!(quL&1)){ sum=quL/2; con=2*sum+sum*(sum-1); printf("%lld\n",con); } else{ sum=(quL+1)/2; con=sum+sum*(sum-1); printf("%lld\n",con); } } return 0; }