【PAT乙级】D进制的A + B
题目描述:
输入两个非负10进制整数A和B(<= -1),输出A + B的D(1 <D <= 10)进制数。
输入描述:
输入在一行中依次给出3个整数A,B和D.
输出描述:
输出A + B的D进制数。
输入样例:
123 456 8
输出样例:
1103
解题思路:
采用堆栈求解,先令C = A + B如果C等于0,就直接输出0,否则对C进行进制转换。把C对D的余数推入栈中,然后C除以D的值赋给C,最后根据堆栈“后进先出”的规则输出C对D的余数,也就得到了D进制下的C。
AC代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a,b,d;
cin >> a >> b >> d;
stack<int> s;
int c = a+b;
if(c == 0)
{
cout << 0;
}
while(c!=0)
{
s.push(c%d);
c /= d;
}
while(!s.empty())
{
cout << s.top();
s.pop();
}
return 0;
}
原文链接:【PAT乙级】D进制的A + B
麦芽雪冷萃 版权所有,转载请注明出处。
还没有任何评论,你来说两句吧!