1.十进制转任何进制

#include<iostream>
#define int unsigned long long
using namespace std;
signed main(){
	int s,pre=1,m,a[1000];
	cin>>s>>m;
	while(s!=0){
		a[++pre]=s%m;
		s/=m;
	}
	for(int i=pre;i>=2;i--){
		if(a[i]<10)cout<<a[i];
		else cout<<(char)(a[i]-10+'A');
	}
	return 0;
}

2.任何进制转十进制

#include<iostream>
#include<string>
using namespace std;
int n,m,s,a[100];
string z;
int main(){
	cin>>n>>z;
	int size=z.size(),pow=1,pre=0;
	for(int i=size-1;i>=0;i--){
		int r;//r为位数 
		if(z[i]<='9'&&z[i]>='0')r=z[i]-'0';
		else r=z[i]-'A'+10;
		s+=r*pow;//位数乘以位权,然后累加 
		pow*=n;//计算下一位的位权 
	}
	cout<<s;
	return 0;
}

3.任何进制转任何进制

#include<iostream>
#include<string>
using namespace std;
int n,m,s,a[100];
string z;
int main(){
	cin>>n>>z>>m;
	int size=z.size(),pow=1,pre=0;
	for(int i=size-1;i>=0;i--){
		int r;//r为位数 
		if(z[i]<='9'&&z[i]>='0')r=z[i]-'0';
		else r=z[i]-'A'+10;
		s+=r*pow;//位数乘以位权,然后累加 
		pow*=n;//计算下一位的位权 
	}
	while(s!=0){
		a[++pre]=s%m;
		s/=m;
	}
	for(int i=pre;i>=1;i--){
		if(a[i]<10)cout<<a[i];
		else cout<<(char)a[i]-'A'+10;
	}
	return 0;
}

备注,程序只能处理小于等于32进制的数,不过用于应对一些简单的比赛还是可以的