题目链接
题解
1.ma
⩾
\geqslant
⩾mb
2.sum1 = (sum1*c[i]+a[i])%p;
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[100005];
ll b[100005];
ll c[100005];
ll p=1000000007;
int main(){
ll n;
cin>>n;
int ma;
cin>>ma;
for(ll i=1;i<=ma;i++) cin>>a[i];
int mb;
cin>>mb;
for(ll i=ma-mb+1;i<=ma;i++) cin>>b[i];
for(int i=ma;i>=1;i--){
c[i] = max(max(a[i],b[i])+1,ll(2));
}
// for(ll i=1;i<=ma;i++){
// cout<<c[i]<<endl;
// }
ll sum1=0,sum2=0;
for(int i=1;i<=ma;i++){
sum1 = (sum1*c[i]+a[i])%p;
sum2 = (sum2*c[i]+b[i])%p;
}
cout<<(sum1-sum2+p)%p<<endl;
return 0;
}
进制深入理解
例如说某种 X 进制数,最低数位为二进制,第二数位为十进制,第三数位为八进制,则 X 进制数 321 转换为十进制数为 65
65 = 3
×
\times
×(10
×
\times
× 2) + 2
×
\times
× 2 + 1
取模运算
1.(a+b)%p=(a%p+b%p)%p
2.(a-b)%p=(a%p-b%p)%p
3.(ab)%p=((a%p)(b%p))%p
4.(ab)%p=((a%p)b)%p
5.((a+b)%p+c)%p=(a+(b+c)%p)%p
取模运算的理解和应用