From 755a358c75c471ba1a01c0589b58a283d840975a Mon Sep 17 00:00:00 2001 From: xingyou wu <3050128610@qq.com> Date: Mon, 31 Mar 2025 19:48:16 +0800 Subject: [PATCH] =?UTF-8?q?lanqiao=202108=20=20X=20=E8=BF=9B=E5=88=B6?= =?UTF-8?q?=E5=87=8F=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 13lanqiao/test5.cpp | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 13lanqiao/test5.cpp 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