挚爱 题解分享 · 2025/3/30
X 进制减法(编程题) - 题解
暴力 ``` #include<bits/stdc++.h> #include<vector> using namespace std; typedef long long ll; const int N = 1e5 + 10,MOD = 1e9 + 7; ll a[N],b[N]; /* 解法:通过观察可得,每一位的进制 = max(max(a[i],b[i])+1,2) 同时为了个位对齐,所以需要将a,b数组逆序存储 */ int main() { ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);//取消同步流,让C++代码更快 int mx,m,n;//mx为最高进制,A的位数为m 和 B的位数为n cin>>mx>>m; //先逆序存储A for(int i = m;i >= 1;i--) { cin>>a[i]; } cin>>n; //再逆序存储B for(int i = n;i >= 1;i--) { cin>>b[i]; } ll ans = 0;//存储A-B的结构 ll w = 1;//w存储每一位的权重 ll t;//存储每一位的进制 for(int i = 1;i <= max(m,n);i++) { t = max(max(a[i],b[i])+(ll)1,(ll)2);//计算每一位的进制 ans = (ans+(a[i] - b[i])*w) % MOD;//计算当前位置减法后转化为10进制的结果 w = (w * t) % MOD;//计算每一位的权重 } cout<<ans % MOD; return 0; } ```
查看全文
0 0 1 1
Fxzbed 题解分享 · 2024/4/12
X 进制减法(编程题) - 题解
``` #include <bits/stdc++.h> using namespace std; const int N = 1e5 + 10; long long n, ma, num[N], ma_, num_[N], ans; int main(void) { ios::sync_with_stdio(false), cin.tie(0), cout.tie(0); cin >> n >> ma; for (int i = ma - 1; i >= 0; i --) cin >> num[i]; cin >> ma_; for (int i = ma_ - 1; i >= 0; i --) cin >> num_[i]; long long base = 1; for (int i = 0; i < ma; i ++) { long long cur = max(num[i], num_[i]) + 1; if (cur < 2) cur = 2; ans += ((num[i] - num_[i]) * base); ans %= 1000000007; base *= cur; base %= 1000000007; //防止base多次乘导致溢出 } cout << ans % 1000000007 << endl; return 0; } ```
查看全文
0 0 0 0