牛客小白月赛20 F进制转换
算法分析
详细分析进制转换
代码实现
#include<iostream>
#include<cstring>
#include<math.h>
#include<vector>
#include<string>
using namespace std;
string n;
int s,k;
vector<int > a,res;
int main()
{
cin>>n;
cin>>s>>k;
int len=n.length();
for(int i=len-1;i>=0;i--)
{
if(n[i]>='0'&&n[i]<='9')
a.push_back(n[i]-'0');
if(n[i]>='a'&&n[i]<='z')
a.push_back(n[i]-'a'+10);
}
while(a.size())
{
int t=0;
for(int i=a.size()-1;i>=0;i--)
{
a[i]+=t*s;
t=a[i]%k;
a[i]/=k;
}
res.push_back(t);
while(a.size()&&!a.back())
a.pop_back();
}
for(int i=res.size()-1;i>=0;i--)
{
if(res[i]>=0&&res[i]<=9)
printf("%d",res[i]);
else
printf("%c",res[i]-10+'a');
}
cout<<endl;
return 0;
}