1022. D进制的A+B (20)
时间限制 100 ms
内存限制 65536 kB
代码长度限制 8000 B
判题程序 Standard
作者 CHEN, Yue
输入两个非负10进制整数A和B(<=230-1),输出A+B的D (1 < D <= 10)进制数。
输入格式:
输入在一行中依次给出3个整数A、B和D。
输出格式:
输出A+B的D进制数。
输入样例:
123 456 8
输出样例:
1103
原题地址: 链接
进制转换, 用栈可以很容易解决, 注意一下边界: 首位为0
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <cctype>
#include <stack>
using namespace std;
long long A, B;
int D;
void solve()
{
long long C = A + B;
if(C == 0){
cout << "0" << endl;
return;
}
stack<int> s;
for(; C; C /= D){
s.push(C % D);
}
//首位为0的情况
if(s.top() == 0)
s.pop();
while(!s.empty()){
cout << s.top();
s.pop();
}
cout << endl;
}
int main()
{
cin >> A >> B >> D;
solve();
return 0;
}