解题思路:
注意事项:
参考代码:
import os
import sys
# 请在此输入您的代码
"""
了解进制的规律,需要注意A>=B
"""
# 输入数据
n=eval(input())
ma=eval(input())
lista=list(map(int,input().split()))
mb=eval(input())
listb=list(map(int,input().split()))
mod=1000000007
# 确定进制
listx=[]
cha=ma-mb
if cha>0:
for i in range(cha):
listx.append(lista[i])
for i in range(cha,ma):
mmax=max(2,max(lista[i],listb[i])+1)
listx.append(mmax)
listx=listx[::-1]
"""
根据观察 需要计算n! 可以采用前缀和的思维
"""
list1=[listx[0]]
for i in range(1,ma-1):
num=listx[i]*list1[i-1]%mod
list1.append(num)
# 完成了前缀操作 进行计算
sum1=0
index1=-1
for i in range(ma-1):
num=lista[i]*list1[index1]%mod
sum1+=num
if i==ma-2:
sum1+=lista[-1]
index1-=1
sum1%=mod
sum2=0
index2=-1
for i in range(mb-1):
num=listb[i]*list1[index2]%mod
sum2+=num
if i==mb-2:
sum2+=listb[-1]
index2-=1
sum2%=mod
# 为了防止sum1-sum2为负数
print((sum1-sum2+mod)%mod)
0.0分
3 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复