【题目】
输入两个非负10进制整数A和B(<=230-1),输出A+B的D (1 < D <= 10)进制数。
输入格式:
输入在一行中依次给出3个整数A、B和D。
输出格式:
输出A+B的D进制数。
输入样例:123 456 8输出样例:
1103
【思路】通过栈来实现十进制数对D进制数的转换(1 < D <= 10)。若要转换的数num不为0,则将num%D压入栈中,然后num/=D反复计算,直至num为0,则把栈里元素全部弹出来。
【代码】满分的C++代码如下:
/*
144(8) == > 100
100%8 = 4 100/8 = 12
12%8 = 4 12/8 = 1
1%8 = 1 1/8 = 0
*/
#include <iostream>
#include <stack>
using namespace std;
typedef unsigned long long ULL;
void changeToD(ULL num,int d)
{
stack<int> s;
while (num)
{
s.push(num % d);
num /= d;
}
while (!s.empty())
{
cout << s.top();
s.pop();
}
cout << endl;
}
int main()
{
ULL a,b;
int d;
ULL sum;
while (cin >> a >> b >> d)
{
if (a == 0 && b == 0)
{
cout << 0 << endl;
}
else
{
sum = a + b;
changeToD(sum,d);
}
}
return 0;
}