题目地址:https://pintia.cn/problem-sets/994805260223102976/problems/994805299301433344
输入两个非负 10 进制整数 A 和 B \((≤2^{30?1})\),输出 A+B 的 D (1<D≤10)进制数。
输入在一行中依次给出 3 个整数 A、B 和 D。
输出 A+B 的 D 进制数。
123 456 8
1103
进制转换问题,将10进制数转化为D进制数,使用栈依次存储10进制数对D的余数,直到商为0为止。然后出栈即可。难得的一遍AC、、、
#include <iostream>
#include <stack>
using namespace std;
int main() {
long long A, B;
short D;
cin >> A >> B >> D;
long long remainder = (A + B) % D;
long long C = (A + B) / D;
stack<long long> s;
// 先进行求余,再计算商
while (C != 0) {
s.push(remainder);
remainder = C % D;
C /= D;
}
s.push(remainder);
while (!s.empty()) {
cout << s.top();
s.pop();
}
cout << endl;
return 0;
}
原文:https://www.cnblogs.com/another-7/p/12171258.html