lanqiao 2108 X 进制减法

This commit is contained in:
2025-03-31 19:48:16 +08:00
parent 7c2c12de2b
commit 755a358c75

34
13lanqiao/test5.cpp Normal file
View File

@@ -0,0 +1,34 @@
// lanqiao 2108 X 进制减法
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e5+10, MOD = 1e9+7;
int a[N], b[N];
/*
解法: 通过观察可得,每一位的进制=max(max(a[i],b[i])+1,2)
同时为了保证个位对齐所以需要将a,b数组逆序存储
*/
signed main(){
int mx, m, n; // mx-最高进制位, A的进制位m, B的进制位n
cin >> mx >> m;
for(int i = m; i >= 1; i--) cin >> a[i];
cin >> n;
for(int i = n; i >= 1; i--) cin >> b[i];
int ans = 0; // 存储A-B的结果
int w = 1; // W存储每一位的权重
int t; // 存储每一位的进制
for(int i = 1; i <= max(m,n); i++){
t = max(max(a[i], b[i]) + (int)1, (int)2); // 计算每一位的进制
ans = (ans + (a[i] - b[i]) * w) % MOD; // 计算当前位置减法后转化为十进制的结果
w = (w*t) % MOD; // 计算每一位的权重
}
cout << ans % MOD << endl;
return 0;
}
/* test samples -> 94
11
3
10 4 0
3
1 2 0
*/