进制转换的本质是 除基取余
先将被除数转换为十进制,然后用十进制的数除以所求的进制,保留余数,直到被除数商为0
8 >> 1000 >> 0001 执行一遍内层循环后a[i]取值全为0,b=1 直接退出

#include<bits/stdc++.h>
using namespace std;
string conversion(int m, string a, int n){
	int l = a.size(), r, t;
	string b;
	for(int i=0;i<l;){
		r = 0;
		for(int j=i; j< l;j++){
			t = (a[j] - '0' + r*m) % n;
			a[j] = (a[j] - '0' + r*m) / n + '0';
			r = t;
		}
		b +=char(r + '0');
		while(a[i] == '0') i++;
	}
	return b;
}
int main(){
	string a, b;
	while(cin>>a){
		b = conversion(10, a, 2); //十进制转换为二进制 
		a = conversion(2, b, 10); //二进制转换为十进制
		reverse(a.begin(), a.end());
		cout<<a<<endl; 
	}
}