//m进制转n进制,用10进制作为中间人 // for(int i=str.size()-1;i>=0;i--)//写成i++了就段错误了 #include <iostream> #include <vector> using namespace std; int CharToInt(char c) { if(c>='0'&&c<='9') return c-'0'; else return c-'A'+10; } char IntToChar(int x) { if(x>=0&&x<=9) return x+'0'; else return x-10+'a'; } int main() { int m, n; while (cin >> m >> n) { string str; cin>>str;//能多个用例输入。用getline(cin,str)就会接收2后面的换行符 long long ten=0;// for(int i=0;i<str.size();i++)//m进制转10进制 { ten=ten*m; ten+=CharToInt(str[i]); } vector<char> answer; while(ten)//10进制转n进制 { char x=IntToChar(ten%n); answer.push_back(x); ten/=n; } for(int i=answer.size()-1;i>=0;i--) { cout<<answer[i]; } cout<<endl; } return 0; }