PAT1022 D进制的A+B

PAT1022 D进制的A+B

题目

输入两个非负 10 进制整数AAB(2301)B (≤2^{30}−1),输出A+BA+BD(1<D10)D(1<D≤10)进制数。

输入格式

输入在一行中依次给出 3 个整数AABBDD

输出格式

输出A+BA+BDD进制数。

输入样例

1
123 456 8

输出样例

1
1103

思路

算出加法后,进制数装换。用除法模拟手算。余数因为倒过来,所以可以用栈,数组也行。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//pat1022
#include <stdio.h>
#include <stack>
using namespace std;
int main(int argc, char const *argv[])
{
int a, b, d;
stack<int> s;
scanf("%d %d %d", &a, &b, &d);
a += b;
if (!a)
{
printf("0\n");
}
int yu = 1;
while (a)
{
yu = a % d;
a /= d;
s.push(yu);
}
for (int i = 0; !s.empty(); i++)
{
printf("%d", s.top());
s.pop();
}
return 0;
}
文章作者: Shengyaqingfeng
文章链接: https://creazyboyone.github.io/pat1022/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Shengyaqingfeng's Blog