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

输入两个非负 10 进制整数 A 和 B ( ≤ 2 30 − 1 ≤2^{30}−1 2301),输出 A + B A+B A+B D D D ( 1 < D ≤ 10 11<D10)进制数。
输入格式:
输入在一行中依次给出 3 个整数 A A A B B B D D D

输出格式:
输出 A + B A+B A+B D D D 进制数。

输入样例:

123 456 8

输出样例:

1103

解题思路:

除基取余法:十进制数 x x x 转换为D进制数 y y y 的方法。

int y[32], cnt = 0;
do {
	y[cnt++] = x % d;
	x /= d;
} while (x != 0);

答案代码:

#include 
using namespace std;

int main() {
	int a=0, b=0, d=0, sum=0;
	cin >> a >> b >> d;
	sum = a+b;

    // 除基取余法
	int ans[32], cnt = 0;
	do {
		ans[cnt++] = sum % d;
		sum /= d;
	} while (sum != 0);
    
	for (int i = cnt - 1; i >= 0; i--)
		cout << ans[i];
	
	return 0;
}

你可能感兴趣的:(PAT)