题目链接:http://codeup.cn/problem.php?cid=100000593&pid=3
题目描述
将M进制的数X转换为N进制的数输出。
输入
输入的第一行包括两个整数:M和N(2<=M,N<=36)。
下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出。
输出
输出X的N进制表示的数。
样例输入
10 2
11
样例输出
1011
代码
#include <cstdio>
#include <cstring>
#include <cmath>
char x[1010], y[1010];
int to_ten(char x[], int m) { //首先转化为十进制
int len = strlen(x);
int temp = 0, t;
for(int i = 0; i < len; i++) {
if(x[i] >= 'A' && x[i] <= 'Z')
t = x[i] - 'A' + 10;
if(x[i] >= '0' && x[i] <= '9')
t = x[i] - '0';
temp = temp + t * pow(m * 1.0, len - 1 - i);
}
return temp;
}
void to_n(int temp, int n){ //然后将十进制转化成n进制
int num = 0, p;
do {
p = temp % n;
if(p >= 0 && p <= 9)
p += '0';
if(p >= 10 && p <= 36)
p = p - 10 + 'a';
y[num++] = p;
temp /= n;
}while(temp != 0);
}
int main(){
int m, n;
while(scanf("%d%d", &m, &n) != EOF) {
memset(y, 0, sizeof(y));
scanf("%s", x);
int temp = to_ten(x, m);
to_n(temp, n);
for(int i = strlen(y) - 1; i >= 0; i--)
printf("%c", y[i]);
printf("\n");
}
return 0;
}
【注】:OJ答案错误50,未找到错因,望大佬指正!