1022 D进制的A+B (20 分)

1022 D进制的A+B (20 分)

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

输入格式:

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

输出格式:

输出 A+BD 进制数。

输入样例:

123 456 8

输出样例:

1103

思路

将十进制数转换为Q进制数z:采用除基取余法

int z[40], num = 0;//数组z存放Q进制数y的每一位,num为位数
do{
    z[num++] =y % Q;
    y = y / Q;
}while(y != 0);

代码

  1. 数组z[i]注意要逆向输出
  2. 注意当a+b为0时,特判输出
#include<stdio.h>
int main(){
	int a, b, sum, d;
	scanf("%d%d%d", &a, &b, &d);
	int z[35];
	int num = 0;
	sum = a + b;
	do{
		z[num++] = sum % d;
		sum = sum / d; 
	}while(sum != 0);
	 
	if(sum = 0) printf("0");
	else{
		for(int i = num - 1; i >= 0; i--){
			printf("%d",z[i]);
		}
	}
	return 0;
}
posted @ 2021-08-03 15:00  shiff  阅读(29)  评论(0编辑  收藏  举报