小张的进制转换,有点不会

小张同学最近正在学习进制转换,他已经掌握了各种进制转的技巧。面对众多的进制转换问题,小张觉得逐一计算效率不高,还是写个程序计算起来更快。
请你帮助小张同学编程,将无符号整数n,转化成在b进制下的表示。
例如: n为10,b为2,则转化后为1010。
又如:n为10,b为16,则转化后为0XA。


#include <iostream>
#include <vector>
using namespace std;
int main()
{
    int n, D;
    vector<int> outcome;
    cout << "输入要转换的整数和进制" << endl;
    cin >> n >> D;
    for (; n > 0;)
    {
        outcome.push_back(n % D);
        n /= D;
    }

    for (vector<int>::iterator it = outcome.end(); it != outcome.begin();)
    {
        --it;
        if ((*it) < 10)
            cout << *it;
        else
            cout << (char)((*it) - 10 + 'A');
    }

    return 0;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

#include <bits/stdc++.h>
using namespace std;
void f(int a,int x)
{
    int ans[10005];
    int cnt = 0;
    while(a!=0){
        ans[++cnt] = a%x;
        a/=x;
    }
    if(x==16)cout<<"0X";
    for(int i=cnt;i>=1;i--){
        if(ans[i]==10)cout<<'A';
        else if(ans[i]==11)cout<<'B';
        else if(ans[i]==12)cout<<'C';
        else if(ans[i]==13)cout<<'D';
        else if(ans[i]==14)cout<<'E';
        else if(ans[i]==15)cout<<'F';
        else cout<<ans[i];
    }
}
int main()
{
    int n;
    cin>>n;
    int a,x;
    while(n--){
        cin>>a>>x;
        f(a,x);
        cout<<endl;
    }
    return 0;
}