文章目录
题目
1022 D进制的A+B (20分)
输入两个非负 10 进制整数 A 和 B (≤2^30−1),输出 A+B 的 D (1<D≤10)进制数。
输入格式:
输入在一行中依次给出 3 个整数 A、B 和 D。
输出格式:
输出 A+B 的 D 进制数。
输入样例:
123 456 8
输出样例:
1103
分析
题目简单,就是进制换算的问题。把十进制数换算成D进制。用A+B得到的和除以D,得到的余数存储起来。在把得到的商继续除以D。。。直到商为0。最后把余数逆向输出即可。注意A+B=0的情况。因为A+B的范围小于int的范围,所以可以用int来存储。
代码
#include<iostream>
#include<stack>
using namespace std;
int main()
{
int a, b, d, sum;
stack<int>s;
cin >> a >> b >> d;
sum = a + b;
if (!sum)cout << 0;
while (sum > 0) {
s.push(sum % d);
sum /= d;
}
for (;!s.empty() ; s.pop()) {
cout << s.top();
}
return 0;
}