题目内容
输入两个非负 10 进制整数 A 和 B (≤230−1),输出 A+B 的 D (1<D≤10)进制数。
输入格式:
输入在一行中依次给出 3 个整数 A、B 和 D。
输出格式:
输出 A+B 的 D 进制数。
输入样例:
123 456 8
输出样例:
1103
鸣谢用户谢浩然补充数据!
一、题解要点
- 用取余法将a+b的结果转化为d进制的数
- 由于保存在数组中的数都是倒过来的,所以要从尾部开始向前遍历
二、具体实现
#include<iostream>
#include<string.h>
using namespace std;
int main(){
long a,b;
int d,wei=0; //wei用来记录把取余出来的数字保存在哪个位
long sum; //保存a+b的值
int r[1000]={0}; //保存d进制的数
cin>>a>>b>>d;
sum = a + b;
/*用取余法对数字进行处理,得到d进制的数*/
while(sum != 0){
r[wei] = sum % d;
sum = sum / d;
wei++;
}
/*如果a、b都是0的话就输出0*/
if(wei == 0){
cout<<"0";
}
/*从高位到低位输出该进制的数*/
for(int i=wei-1;i>-1;i--){
cout<<r[i];
}
cout<<endl;
return 0;
}
总结
具体难度不大,但是有一种情况要注意,就是a+b等于0的时候,也要有输出,测试点3就是这样的测试用例