<center>

进制转换2

时间限制: 1 Sec  内存限制: 32 MB
</center>

题目描述

将M进制的数X转换为N进制的数输出。

输入

输入的第一行包括两个整数:M和N(2<=M,N<=36)。
下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出。

输出

输出X的N进制表示的数。

样例输入

10 2
11

样例输出

1011

提示

注意输入时如有字母,则字母为大写,输出时如有字母,则字母为小写。

#include <stdio.h>
#include <string.h>
int main()
{
    char a[1550], c[1550];
    int data[1550];
    int i, j, k, m, n, len, sum;
    while (~scanf("%d%d",&m, &n))
    {
        memset(a, 0, sizeof(a));
        scanf("%s", a);
        len = strlen(a);
        c[j = 0] = '0';
        sum = 1;
        for (i = 0; i < len; i++)
        {
            if (a[i] >= 'A' && a[i] <= 'Z')
                data[i] = a[i] - 'A' + 10;
            else data[i] = a[i] - '0';
        }
        while (sum)
        {
            sum = 0;
            for (i = 0; i < len; i++)
            {
                k = data[i] / n;
                sum += k;
                if (i == len - 1)
                    c[j++] = "0123456789abcdefghijklmnopqrstuvwxyz"[data[i] % n];
                else
                    data[i + 1] += data[i] % n * m;
                data[i] = k;
            }
        }
        if (j == 0)
            j++;
        c[j] = '\0';
        len = strlen(c);
        for (i = len - 1; i >= 0; i--)
            printf("%c", c[i]);
        printf("\n");
    }
    return 0;
 }