PTA 1022 D进制的A+B c++实现
输入两个非负 10 进制整数 A 和 B (≤ 2^30−1),输出 A+B 的 D(1<D≤10)进制数。
输入格式:
输入在一行中依次给出 3 个整数 A、B 和 D。
输出格式:
输出 A+B 的 D 进制数。
输入样例:
123 456 8
输出样例:
1103
解题思路:
将每次对d取得的余数用双向队列保存push_front()
模拟:
假如每一次取得的余数分别为 3 0 1 1
为了保证存到双向队列里的数是1 1 0 3,则就要用push_front()
具体原理你可以自己动笔算下便知
此题唯一要注意的地方就是:当双向队列的大小为0时,要输出0
代码示例:
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long int a, b;
int d;
cin >> a >> b >> d;
long long int ans = a + b;
deque<int> res;
while (ans != 0)
{
int temp = ans % d;
res.push_front(temp);
ans = ans / d;
}
if (res.size() == 0)
{
cout << 0;
}
else
{
for (int i = 0; i < res.size(); i++)
{
cout << res[i];
}
}
}