lanqiao 2108 X 进制减法
This commit is contained in:
34
13lanqiao/test5.cpp
Normal file
34
13lanqiao/test5.cpp
Normal 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
|
||||
*/
|
||||
Reference in New Issue
Block a user