进制转换
时间限制:1秒 空间限制:32768K
题目描述
给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数
输入描述:
输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。
输出描述:
为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)
示例1
输入
7 2
输出
111
#include<stdio.h>
#include<string.h>
int main()
{
char a[1550], c[1550];
int data[1550];
int i, j, k, n, len, sum, flag;
while (~scanf("%s %d", a, &n))
{
flag = 0;
len = strlen(a);
c[j = 0] = '0';
if (a[0] == '-')
{
printf("-");
flag = 1;
}
sum = 1;
for (i = flag; i < len; i++)
data[i] = a[i] - '0';
while (sum)
{
sum = 0;
for(i = flag; i < len; i++)
{
k = data[i] / n;
sum += k;
if(i == len - 1)
c[j++] = "0123456789ABCDEF" [data[i] % n];
else
data[i + 1] += data[i] % n * 10;
data[i] = k;
}
}
if(!j)
j++;
for(i = j - 1; i >= 0; i--)
printf("%c", c[i]);
printf("\n");
}
return 0;
}