1012: QAQ的区间统计
时间限制: 1 Sec 内存限制: 128 MB提交: 142 解决: 42
[ 提交][ 状态][ 讨论版]
题目描述
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
样例输出
129
找规律的问题 随便说一个区间 [1,7] 区间的长度 len=7-1+1=7 len 为奇数时 1 2 3 4 5 6 7 长度为 7 的子区间 [1,7] 1个 长度为 5的子区间 [1,5] [2,6],[3,7] 3个 长度为 3 的子区间 [1,3] [2,4] [3,5] [4,6] [5,7] 5个 长度为 1 的子区间 [1,1] [2,2] [3,3] [4,4] ……7个 当len 为偶数时 自己找规律
#include<cstdio> int main() { int t; scanf("%d",&t); while(t--) { long long l,r; scanf("%lld%lld",&l,&r); long long len=r-l+1,ans,n; if(len%2) { n=(len+1)/2; ans=n*n; } else { n=len/2; ans=n*(n+1); } printf("%lld\n",ans); } return 0; }