把一串字符 由a进制换为b进制
先把数入的字符改为数组存在vector中,由低位变为高位;
开始 轮大数 出余数 换进制;
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
int a,b;
string a_line;
vector<int> number;
cin>>a>>b>>a_line;
for(auto c:a_line){
if(c<='9') number.push_back(c-'0');
else if(c<='Z') number.push_back(c-'A'+10);
else number.push_back(c-'a'+36);
}
reverse(number.begin(),number.end());
vector<int> res;
while(number.size()){//没有被轮完;
int r=0;
//轮出余数r;
//每轮一圈出一个余数
for(int i=number.size()-1;i>=0;i--){
number[i]+=r*a;
r=number[i]%b;
number[i]/=b;
}
res.push_back(r);
//每轮一次,可能会有前导0
while(number.size()&&number.back()==0) number.pop_back();
}
reverse(res.begin(),res.end());
string b_line;
for (auto x : res)
{
if (x <= 9) b_line += char('0' + x);
else if (x <= 35) b_line += char('A' + x - 10);
else b_line += char('a' + x - 36);
}
cout << a << ' ' << a_line << endl;
cout << b << ' ' << b_line << endl;
cout << endl;
}
return 0;
}