AT (Basic Level) 1022 D进制的A+B

题目:

输入两个非负 10 进制整数 A 和 B (≤2​30​​−1),输出 A+B 的 D (1

输入格式:

输入在一行中依次给出 3 个整数 A、B 和 D。

输出格式:

输出 A+B 的 D 进制数。

输入样例:

123 456 8

输出样例:

1103

思路:

首先,A、B的范围在2的30次方以内,所以需要用long long类型来进行存放;

其次,我们需要了解十进制转D进制的方法,我以十进制转八进制,方法如下:

除8取余法,即每次将整数部分除以8,余数为该位权上的数,而商继续除以8,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数起,一直到最前面的一个余数。

代码

#include
#include
#include
#include
/**
**D进制的A+B
**@author Fhujinwu
*/
int main()
{
    long a,b,d,sum;
    int ans[40],i=0,j;
    scanf("%ld%ld%ld",&a,&b,&d);
    sum=a+b;
    do
    {
    	ans[i++]=sum%d;
    	sum/=d;
	}while(sum!=0);
	for(j=i-1;j>=0;j--)
	  printf("%d",ans[j]);
	return 0;
}

 

你可能感兴趣的:(PAT(乙题))