AcWing 3374. 进制转换2
原题链接
中等
作者:
y差c
,
2024-04-07 17:30:47
,
所有人可见
,
阅读 101
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
int a,b;
string line;
cin>>a>>b>>line;
vector<int> number;//将字符串转化
for(auto c:line)
{
if(c>='0' && c<='9') number.push_back(c-'0');
if(c>='A' && c<='Z') number.push_back(c-'A'+10);
//if(c>='a' && c<='z') number.push_back(c-'a'+36);
}
reverse(number.begin(),number.end());
vector<int> res;
while(number.size())
{
int t=0;//进位
for(int i=number.size()-1;i>=0;i--)
{
number[i]+=t*a;
t=number[i]%b;
number[i]/=b;
}
res.push_back(t);
while(number.size() && number.back()==0) number.pop_back();
}
reverse(res.begin(),res.end());
string ans;
for(auto x:res)
{
if(x<=9) ans+=char('0'+x);
else if(x<=35) ans+=char('A'+x-10);
//else ans+=char('a'+x-36);
}
//转化为小写字母
for(int i=0;i<ans.size();i++)
if(ans[i]>='A'&&ans[i]<='Z') ans[i]+=32;
cout<<ans<<endl;
return 0;
}