PAT乙级1022
题目链接
https://pintia.cn/problem-sets/994805260223102976/problems/994805299301433344
题解
很简单,参考十进制转二进制的方法,除二取余至商为0。
这里要注意:需要处理a+b等于0的情况(参考了https://blog.csdn.net/m0_37285185/article/details/68936069,我又没发现边界……My bad,this is not so me.)
// PAT BasicLevel 1022
// https://pintia.cn/problem-sets/994805260223102976/problems/994805299301433344
#include <iostream>
#include <stack>
#include <string>
using namespace std;
string numBaseConversion(int num,int base);
int main()
{
// 获取a、b和d
int a,b,base;
cin >> a >> b >> base;
// 进制转换,输出结果
cout << numBaseConversion(a+b,base);
//system("pause");
return 0;
}
// 将一个十进制数转换为base(1,10]进制的字符串
string numBaseConversion(int num, int base)
{
stack<char> charStack;
string res="";
// 处理num为0的情况
if(num==0){
return "0";
}
// 处理num非0的情况
while(num>0){
charStack.push(num%base+'0');
num/=base;
}
while (!charStack.empty()){
res+=charStack.top();
charStack.pop();
}
return res;
}
作者:@臭咸鱼
转载请注明出处:https://www.cnblogs.com/chouxianyu/
欢迎讨论和交流!