PAT 乙级 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

将十进制数y转换为Q进制数z
  采用“除基取余法”。所谓的“基”,是指要转换成的进制D,因此除基取余的意思就是每次将待转换数除以D,然后将得到的余数作为低位存储,而商继续除以D并进行上面的操作。最后商为0时,将所有位从高到低输出就可以得到z。

int main()
{
	//输入a、b,求a+b的和c的d进制表示
	int a=0,b=0,c=0,d=0;

	cin>>a>>b>>d;
	c=a+b;

	//c的d进制表示结果使用数组存储
	int z[40]={0};
	//count用来存储c的d进制表示的位数
	int count=0;

	//采用“除基取余法”,这里c=0是防止一开始c的结果就是0
	while (c>=0)
	{
		//将c除进制d取余
		z[count]=c%d;
		//对c的结果进行更新
		c=c/d;
		//当c等于0时跳出循环
		if (c==0)
		{
			break;
		}
		count++;
	}

	//将所有位从高到低输出
	for (int i=count;i>=0;i--)
	{
		cout<<z[i];
	}

	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值