暴力
#include<bits/stdc++.h>
#include<vector>
using namespace std;
typedef long long ll;
const int N = 1e5 + 10,MOD = 1e9 + 7;
ll a[N],b[N];
/*
解法:通过观察可得,每一位的进制 = max(max(a[i],b[i])+1,2)
同时为了个位对齐,所以需要将a,b数组逆序存储
*/
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);//取消同步流,让C++代码更快
int mx,m,n;//mx为最高进制,A的位数为m 和 B的位数为n
cin>>mx>>m;
//先逆序存储A
for(int i = m;i >= 1;i--)
{
cin>>a[i];
}
cin>>n;
//再逆序存储B
for(int i = n;i >= 1;i--)
{
cin>>b[i];
}
ll ans = 0;//存储A-B的结构
ll w = 1;//w存储每一位的权重
ll t;//存储每一位的进制
for(int i = 1;i <= max(m,n);i++)
{
t = max(max(a[i],b[i])+(ll)1,(ll)2);//计算每一位的进制
ans = (ans+(a[i] - b[i])*w) % MOD;//计算当前位置减法后转化为10进制的结果
w = (w * t) % MOD;//计算每一位的权重
}
cout<<ans % MOD;
return 0;
}
0 回复
0 转发
1 喜欢
0 阅读



