diff --git a/13lanqiao/test5.cpp b/13lanqiao/test5.cpp new file mode 100644 index 0000000..aa0ff96 --- /dev/null +++ b/13lanqiao/test5.cpp @@ -0,0 +1,34 @@ +// lanqiao 2108 X 进制减法 +#include +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 +*/ \ No newline at end of file