进制转换

时间限制:1秒 空间限制:32768K

题目描述

给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数

输入描述:

输入为一行,M(32位整数)N(2 ≤ N ≤ 16),以空格隔开。

输出描述:

为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10A表示,等等)

示例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;
}