PAT乙级 1022.D进制的A+B (20 分)

输入两个非负 10 进制整数 AB (≤2^30−1),输出 A+BD (1<D≤10)进制数。

输入格式:

输入在一行中依次给出 3 个整数 ABD

输出格式:

输出 A+BD 进制数。

输入样例:

1
123 456 8

输出样例:

1
1103

分析:

设sum = a + b,采用“除基取余法”,将每次sum % d的结果存储在int数组data中,然后令 sum /= d,直至sum==0成立为止。此时数组data中,倒序保存着sum在d进制下每一位的结果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <cstdio>

int main() {
int a, b, d, sum;
int data[32];
scanf("%d %d %d", &a, &b, &d);
sum = a + b;
int i = 0;
do {
data[i++] = sum % d;
sum /= d;
} while (sum != 0);
for (int j = i - 1; j >= 0; j--) {
printf("%d", data[j]);
}
printf("\n");
return 0;
}

----------本文结束感谢您的阅读----------
坚持原创技术分享,您的支持将鼓励我继续创作!