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/
欢迎讨论和交流!
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号