Codeup1950 问题 D: 进制转换

题目链接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,未找到错因,望大佬指正!

发布了162 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Rhao999/article/details/104239394