以十进制为中转。
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<stdlib.h>
#include<string.h>
using namespace std;
int main()
{
ios::sync_with_stdio(false);cin.tie(0);
int n;
scanf("%d",&n);
char s[1025];
int f[1025];
int ans[1025];
while(n--)
{
int a,b;
scanf("%d%d%s",&a,&b,s);
printf("%d %s\n%d ",a,s,b);
int len=strlen(s);
for(int i=0;i<len;i++)
f[i]=isdigit(s[i])?s[i]-'0':(islower(s[i])?s[i]-'a'+36:s[i]-'A'+10);
int j=0;
while(len>0)
{
int s=0;
bool flag=false;
int start=0;
for(int i=0;i<len;i++)
{
s=s*a+f[i];
if(s/b)
flag=true;
if(flag)
{
f[start++]=s/b;
s%=b;
}
}
len=start;
ans[j++]=s;
}
for(int i=j-1;i>=0;i--)
printf("%c",ans[i]>=36?ans[i]-36+'a':(ans[i]>=10?ans[i]-10+'A':ans[i]+'0'));
printf("\n\n");
}
return 0;
}