X 进制:
平时我们所说的10进制数是怎么得出来的呢?
比如10进制数 123: 它是由百位上的1 * 10 * 10 加上 十位上的 2 * 10 加上 个位上的 3 得出来的
关于x进制转10进制:
比如题目中给的:11进制(10)、5进制(4)、2进制(0)
对于i位上的数字num[i],转换为十进制就是num[i]低于i位所有位的进制
就是1052+42+0=108
再比如:11进制(1)、5进制(2)、2进制(0)
就是152+2*2+0=14
抽象到本题就是该位转为10进制,需要乘以该位之前所有的进制之积
code
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
const int N=2e6+10,mod=1000000007;
typedef long long ll;
ll a[N],b[N],c[N];
int main()
{
int n;
cin>>n;
ll k1,k2;
cin>>k1;
for(int i=k1-1;i>=0;i--)
{
cin>>a[i];
}
cin>>k2;
for(int i=k2-1;i>=0;i--)
{
cin>>b[i];
}
for(int i=0;i<max(k1,k2);i++)
{
c[i]=max(max(a[i],b[i])+1,2ll);
}
ll A=0,B=0;
for(int i=k1-1;i>=0;--i)
{
A=((A*c[i])+a[i])%mod;
}
for(int i=k2-1;i>=0;--i)
{
B=((B*c[i])+b[i])%mod;
}
cout<<(A-B+mod)%mod;
}