http://acm.pku.edu.cn/JudgeOnline/problem?id=1220

Код:
#include<iostream>
#include<cstring>
using namespace std;
char a[1000];
int s[1000];
int b[1000];
int n,m;
void setin(){
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	cin>>n>>m;
	cin>>a;
	cout<<n<<" "<<a<<endl;
	cout<<m<<" ";
}

void solve(){
	int l,i,j=0;
	l=strlen(a);
	for(i=0;i<l;i++){
if(a[i]>='0' && a[i]<='9')
	s[i]=a[i]-'0';
else if(a[i]>='A' && a[i]<='Z')
	s[i]=a[i]-'A'+10;
else if(a[i]>='a' && a[i]<='z')
	s[i]=a[i]-'a'+36;
	}
	while(1){
int t=0;
for(i=0;i<l;i++){
	if(s[i]!=0 && i<l-1){
s[i+1]+=(s[i]%m)*n;
s[i]=s[i]/m;
	}
	if(i==l-1)   {
b[j++]=s[i]%m;
s[i]=s[i]/m;
	}
}
for(i=0;i<l;i++)
	if(s[i]!=0) {
t=1;
break;
	}
	if(t==0)  break;
	}
	for(i=j-1;i>=0;i--){
if(b[i]>=0 && b[i]<=9)
	cout<<(char)(b[i]+'0');
else if(b[i]>=10 && b[i]<=35)
	cout<<(char)(b[i]+'A'-10);
else if(b[i]>=36 && b[i]<=61)
	cout<<(char)(b[i]+'a'-36);
	}
	cout<<endl<<endl;;
}
int main(){
	int round;
	cin>>round;
	while(round--){
setin();
solve();
	}
	return 0;
}