题目描述
X进制减法(简单高效的代码方法)
C++ 代码
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long LL;
const int N = 1e5 + 10, m = 1000000007;
int n;
int ma,mb;
int a[N],b[N];
LL s[N],c[N];
int main()
{
cin>>n;
cin>>ma;
for(int i = ma;i > 0;i --) //逆序存储 高位的数存在后面 低位的数存在前面
cin>>a[i];
cin>>mb;
for(int i = mb;i > 0;i --)
cin>>b[i];
//s[i]表示当前这一位数要乘的数是多少
//c[i]表示当前这一位的进制是多少
s[1] = 1;
c[1] = max({2,a[1] + 1,b[1] + 1});
for(int i = 2;i <= ma;i ++)
{
c[i] = max({2,a[i] + 1,b[i] + 1});
s[i] = (s[i - 1] * c[i - 1]) % m;
}
LL A = 0, B = 0;
for(int i = 1;i <= ma;i ++)
A = (A + (a[i] * s[i])) ;
for(int i = 1;i <= ma;i ++)
B = (B + (b[i] * s[i])) % m;
cout<<(A - B) % m;
}