【PAT B1022】
输入两个非负10进制整数A和B(≤2^30−1),输出 A+B 的 D (1<D≤10)进制数。
输入格式:
输入在一行中依次给出 3 个整数 A、B 和 D。
输出格式:
输出 A+B 的 D 进制数。
输入样例:
123 456 8
输出样例:
1103
思路:
除基取余法。“基”就是要转化的进制D,将十进制数每次除以D取余数,直到商变为0为止。
从前到后取得的余数,按低位到高位放置,然后按高位到地位输出就是最终结果。
代码:
#include <iostream>
using namespace std;
int main()
{
int a, b, d;
int sum;
int result[31]; //存放转换后的二进制数
int n = 0; //result的位指针
cin >> a >> b >> d;
sum = a + b;
do
{
result[n++] = sum % d; //取余数
sum /= d; //计算商
} while (sum != 0);
for (int i = n - 1; i >= 0; --i)
cout << result[i];
}