1 条题解
-
0
自动搬运
来自洛谷,原作者为

见贤思齐_Seakies
JxsQ_Guo搬运于
2025-08-24 21:58:30,当前版本为作者最后更新于2021-10-05 13:09:42,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
题目链接
题意概述
现在有两个 位数,每一位的进制不同,第 位为 进制,要求他们两个的和或差。
题目分析
一看这道题,大家应该就会想到高精度,首先我们把它分为两种情况,第一种情况是计算和,第二种情况为计算差。
我们通过高精度,模拟题意,分别计算出和与差,最后输出,输出时要注意,最后一个数字后面没有空格。
那么我们如何计算和与差呢?
和:首先,我们先计算出每一位的和,然后,我们进行进位操作。
差:与和一样,先计算出差后,如果小于零,便不断地向高位借位,直到得到的数大于等于零为止。
注意:我们输入的时候是从高位开始的,所以,我们进行操作的时候要倒着循环。
详细解释请看代码:
代码
#include <bits/stdc++.h> // 万能头 using namespace std; int n; int x[100005], a[100005], b[100005], sum[100005]; // x 为进制,a 和 b 为两个变进制数,sum 记录和与差 /* ---------------------------------------------- */ void he() { for (int i = n; i >= 1; i--) { // 注意要倒序 sum[i] += a[i] + b[i]; // 算和 a[i - 1] += sum[i] / x[i]; // 让下一位加上这一位多的数 // 注意:我们这里是倒序的,因此,上一位应是 i - 1,下面的减法也一样 sum[i] %= x[i]; // 当前这一位的和对进制取模 // 进位 } } // 计算加法 void cha() { for (int i = n; i >= 1; i--) { sum[i] = a[i] - b[i]; // 算差 while (sum[i] < 0) { // 如果求出的差为负就不断借,直到大于零为止 // 注意:这里一定要用循环,不能只用一个 if,因为你只借一次可能不够用 a[i - 1]--; // 让上一位减一 sum[i] += x[i]; // 当前这一位加上借的这一位,借的数就是上一位的进制 } // 向高位借位 } } // 计算减法 // 核心部分 /* ---------------------------------------------- */ int main() { cin >> n; for (int i = 1; i <= n; i++) { cin >> x[i]; } for (int i = 1; i <= n; i++) { cin >> a[i]; } char c; cin >> c; for (int i = 1; i <= n; i++) { cin >> b[i]; } // 输入 /* ---------------------------------------------- */ if (c == '+') { he(); } else { cha(); } /* ---------------------------------------------- */ for (int i = 1; i < n; i++) { cout << sum[i] << ' '; } // 这里正序输出就可以了 cout << sum[n] << endl; // 注意:这里最后一个数的后面不能有空格 // 输出 return 0; // return 是个好习惯 } // ~ 完美结束!~记录
(别忘了开 O2)于是,有的大佬就要问了,题目不是让你对 取模吗?
其实是不用的, 进制的最大值是 ,那么 是不是还是 呢?同样,所有比 小的数对它取模都等于本身。
题目推荐
https://www.luogu.com.cn/problem/P1601
https://www.luogu.com.cn/problem/P1303
https://www.luogu.com.cn/problem/P1255
https://www.luogu.com.cn/problem/P1009
https://www.luogu.com.cn/problem/P1480
本蒟蒻第一次写题解,希望对大家有帮助!
最后再说一句,大家不要抄袭哦!
- 1
信息
- ID
- 3250
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者