分析
最重要的一点:如何将X进制的数转换成十进制
错误想法:我以为是逐位转换再相加呢
正解:按照654 = 6*100+5*10+4进行转换
即X进制的321,3*10*2+2*2+1=65
代码
#include<iostream>
using namespace std;
const int N = 100010,MOD = 1000000007;
int a[N],b[N];
int n,ma,mb;
int main()
{
scanf("%d",&n);
scanf("%d",&ma);
//把数字按位存到数组中,注意下标0应该对应数字低位,不然两数相减,就错位了!!
for(int i = ma - 1;i >= 0;i --) scanf("%d",&a[i]);
scanf("%d",&mb);
for(int i = mb - 1;i >= 0;i --) scanf("%d",&b[i]);
long long weight = 0,sum = 1,ans = 0;
for(int i = 0;i < ma;i ++)
{
ans = (ans + (a[i]-b[i])*sum)%MOD;
weight = max(max(a[i],b[i])+1,2);
sum = (sum * weight)%MOD;
}
printf("%lld",ans);
return 0;
}