添加链接描述 这题其实要完全理解进制 (原来一直对进制的理解都是错的-。-
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int mod=1000000007,N=1e5+9;
vector<int> arr,brr;
int mx[N];
signed main(){
std::ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
int n;
cin>>n;
int ma,mb;
cin>>ma;
int x;
for(int i=1;i<=ma;i++)cin>>x,arr.push_back(x);
cin>>mb;
for(int i=1;i<=mb;i++)cin>>x,brr.push_back(x);
reverse(arr.begin(),arr.end());
reverse(brr.begin(),brr.end());
for(int i=0;i<arr.size();i++){
mx[i]=max(mx[i],arr[i]+1);
mx[i]=max(mx[i],2ll);
}
for(int i=0;i<brr.size();i++){
mx[i]=max(mx[i],brr[i]+1);
mx[i]=max(mx[i],2ll);
}
int resa=0,pa=1;
for(int i=0;i<arr.size();i++){
if(i==0)resa=(resa+arr[i])%mod;
else resa=(resa+arr[i]*pa)%mod;
pa=pa*mx[i]%mod;
}
int resb=0,pb=1;
for(int i=0;i<brr.size();i++){
if(i==0)resb=(resb+brr[i])%mod;
else resb=(resb+brr[i]*pb)%mod;
pb=pb*mx[i]%mod;
}
cout<<(resa-resb+mod)%mod<<"\n";
return 0;
}
|