A+B range
题目如下:
本题思路一定不能像题目描述的那样,申请一个1e18大的列表(数组),因为你会发现——longlongtime 之后…
根本申请不出来这么大的数组
那么我们得换一种思路了:区间划分 ,即:算出[l3,r3]分别与[l1,r1]、[l2,r2]的交集len1和len2,然后直接求得结果为len1a+len2b
代码如下:
#encoding:utf-8
def judge(l1,r1,l2,r2):
#包含关系
if l2<=l1 and r2>=r1:
return r1-l1+1
elif l2<=l1 and r2<=r1:
return r2-l2+1
#完全不相交
elif r2<l1 or l2>r1:
return 0
#相交
elif l2>l1 and l2<r1 and r2>r1:
return r1-l2+1
elif l2<l1 and r2>l1 and r2<r1:
return r2-l1+1
a,b = list(map(int,input().split()))
l1 ,r1 = list(map(int,input().split()))
l2,r2 = list(map(int,input().split()))
l3,r3 = list(map(int,input().split()))
mod = 1e9+7
len1 = judge(l1,l2,l3,r3)
len2 = judge(l2,r2,l3,r3)
print(round((a*len1+b*len2)%mod))