输入两个非负 10 进制整数 A 和 B (≤2
30
−1),输出 A+B 的 D (1<D≤10)进制数。
输入格式:
输入在一行中依次给出 3 个整数 A、B 和 D。
输出格式:
输出 A+B 的 D 进制数。
输入样例:
123 456 8
输出样例:
1103
思路:本来是想用以前学过的一种% / pow一起操作的如图
在这里插入#include<iostream>
#include<string>
#include<cmath>
using namespace std;
int main()
{
int a, b, d;
cin >> a >> b >> d;
int t = a + b;
int ret = 0;
int exp=0;
while (t != 0)
{
int tmp = t % d;
ret += tmp * pow(10, exp++);
t /= d;
}
cout << ret << endl;
}代码片
但没考虑到题目中数字的范围实在太大,只能用数组,但是思想是一样的,都是从后往前%取每一位数,这里取模的d是要转换的进制,接着按照本来的进制分配位权,在数组中我们可以认为位权已经设置好为10
#include<iostream>
#include<string>
#include<cmath>
using namespace std;
int main()
{
int a, b, d;
cin >> a >> b >> d;
int t = a + b;
int retReverse[100] = { 0 };
int i = 0;
if (t == 0)
{
cout << 0 << endl;
return 0;
}
while (t != 0)
{
retReverse[i++] = t % d;
t /= d;
}
for (int j = i - 1; j >= 0; j--)
cout << retReverse[j];
}