给定一个十进制数 M ,以及需要转换的进制数 N 。将十进制数 M 转化为 N 进制数。
当 N 大于 10 以后, 应在结果中使用大写字母表示大于 10 的一位,如 'A' 表示此位为 10 , 'B' 表示此位为 11 。
若 M 为负数,应在结果中保留负号。
数据范围:
要求:空间复杂度
,时间复杂度
7,2
"111"
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;
}