解题思路:
注意事项:
参考代码:
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分
4 人评分
Tom数 (C语言代码)浏览:581 |
C语言程序设计教程(第三版)课后习题12.2 (C语言代码)浏览:839 |
C二级辅导-等差数列 (C语言代码)浏览:891 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:620 |
【出圈】 (C++代码)简单循环浏览:699 |
众数问题 (C语言代码)浏览:659 |
C语言程序设计教程(第三版)课后习题9.1 (C语言代码)浏览:564 |
C语言程序设计教程(第三版)课后习题6.7 (C语言代码)浏览:615 |
Manchester- 采药(0 1背包)浏览:6964 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:455 |