首页 > 试题广场 >

进制转换

[编程题]进制转换
  • 热度指数:54219 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个十进制数 M ,以及需要转换的进制数 N 。将十进制数 M 转化为 N 进制数。

当 N 大于 10 以后, 应在结果中使用大写字母表示大于 10 的一位,如 'A' 表示此位为 10 , 'B' 表示此位为 11 。

若 M 为负数,应在结果中保留负号。

数据范围: 
要求:空间复杂度O(log_MN),时间复杂度 O(log_MN)
示例1

输入

7,2

输出

"111"
示例2

输入

10,16

输出

"A"
#include <stdio.h>	

char* solve(int M, int N, char arr[1000])
	{
		// write code here
		//char arr[1000] = {;
		int count = 0;
		int mid = M;
		int i = 0;
		while (M)
		{
			M /= N;
			count++;
		}
		int *** = 1;
		if (mid < 0)
		{
			mid = -mid;
			*** = 0;
		}
			for (i = count - 1; i >= 0; i--)
			{
				int z = mid % N;
				if (mid == N)
				{
					arr[i] = 49;
				}
				if (z < 10)
				{
					arr[i] = z + 48;
				}

				else
				{
					arr[i] = z + 55;
				}
				mid = mid / N;
			}
			if (*** == 0)
				printf("-%s", arr);
			else
				printf("%s", arr);
		
		
		return arr;
	}
int main()
{
	int n = 12;
	int m = 23;
	char arr[1000] = {0};
	solve(m, n,arr);
	return 0;
}

发表于 2021-09-15 19:46:49 回复(0)

问题信息

上传者:牛客332641号
难度:
1条回答 6237浏览

热门推荐

通过挑战的用户

查看代码