#include<iostream>usingnamespace std;voidzhuanhuan(int a,int m){if(a ==0)return;zhuanhuan(a / m, m);递归的回溯过程与短除法反着取余数的过程一致
if(a % m >=10)
cout <<(char)(a % m +55);else
cout << a % m;}intmain(){int n;int m;
cin >> n >> m;zhuanhuan(n,m);return0;}
其他进制转化成十进制
#include<iostream>usingnamespace std;intzhuanhuan(string n,int m){int re =0;for(int i =0; i < n.size(); i++){if(n[i]>='0'&&n[i]<='9')
re = re * m +(n[i]-'0');每回乘以进制m都相当于是把数向后移动一位,在加上新来的一位,这样的过程等价于从末尾向前不断计算m的多少次方乘以每一位上的数再相加。
if(!(n[i]>='0'&& n[i]<='9'))
re = re * m +(n[i]-55);}return re;}intmain(){
string a;int m;
cin >> m >> a;
cout <<zhuanhuan(a, m);}