题目如下:
输入两个非负 10 进制整数 A 和 B (≤230−1),输出 A+B 的 D (1<D≤10)进制数。
输入格式:
输入在一行中依次给出 3 个整数 A、B 和 D。
输出格式:
输出 A+B 的 D 进制数。
输入样例:
123 456 8
输出样例:
1103
方法
1 使用数组:
这里我的思路有俩种,一个是用数组来存储短除法计算出的每一位的进制数,例如65的八进制数,它的第一个余数就是1,这是我们所要的
短除法后是要逆序输出的,这个1也就是最后输出的,但根据除的顺序是存在数组的第一位的,具体过程如下:
#include<iostream>
#include<string>
using namespace std;
int main(){
int a,b,d;
cin>>a>>b>>d;
a+=b;
int i=0;
int p[100]={0};//这里的100是随便取的一个值,但这个值最好大一点,不然存储不了那么多位。
while(a/d!=0){
p[i]=a%d;
a/=d;
i++;
}
p[i]=a%d;
for(i;i>=0;i--){
cout<<p[i];
}
return 0;
}
2 使用字符串
使用字符串的好处是不需要逆序输出,直接把每一次计算出来的余数再加上字符串,代码如下:
#include<iostream>
#include<string>
using namespace std;
int main() {
int a, b, d;
cin >> a >> b >> d;
string s = "";
a += b;
while (a / d != 0) {
int g = a % d;
s = to_string(g)+s;//这个反着加还是很便捷的哈
a /= d;
}
s = to_string(a % d)+s;
cout << s;
return 0;
}
本题整体难度较小,主要考察字符串的定义和使用的技巧,数组的定义和使用。