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

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

輸入兩個非負 10 進制整數 A 和 B (≤2​30​​−1),輸出 A+B 的 D (1<D≤10)進制數。

輸入格式:

輸入在一行中依次給出 3 個整數 A、B 和 D。

輸出格式:

輸出 A+B 的 D 進制數。

輸入樣例:

123 456 8

輸出樣例:

1103
#include <cstdio>
int main()
{
	int a,b,d;
	scanf("%d%d%d",&a,&b,&d);
	int sum=a+b;
	int z[40],num=0;
	do{
		z[num++]=sum%d;
		sum=sum/d;
	}while(sum!=0);
	for(int i=num-1;i>=0;i--)
	{
		printf("%d",z[i]); 
	}
	return 0;
 } 

思路:十進制轉換爲D進制用除基取餘法,即如下代碼。

int z[40],num=0;
	do{
		z[num++]=sum%d;
		sum=sum/d;
	}while(sum!=0);

用do-while語句而不用while語句的原因是:如果十進制數y恰好等於0,那麼如果用while語句會直接跳出循環而導致結果出錯(正確結果應是數組z中存放了z[0]=0) 。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章