进制转换掌握好规律即可:10进制转换成x进制即先逐位取余(注意考虑10进制以上进制的情况)再取整,最后记得要反序输出。x进制转10进制则先乘后加即可。这里要小心用例很大的情况,所以要用long long存储。
#include <iostream>
#include <string>
using namespace std;
char s[100];
int main(){
int before,after;
string buf;
while (cin>>before>>after>>buf) {
int len = buf.length();
long long ans = 0;
for (int i = 0; i < len; i++) {
ans *= before;
if (buf[i] >= '0' && buf[i] <= '9')
ans += buf[i] - '0';
else
ans += buf[i] - 'A' + 10;
}
int cnt = 0;
while (ans > 0) {
int tmp = ans % after;
if (tmp >= 10)
s[cnt++] = tmp - 10 + 'a';
else
s[cnt++] = tmp + '0';
ans /= after;
}
int i = cnt - 1;
for (i; i >= 0; i--) {
cout << s[i];
}
cout << endl;
}
}
网友评论