进制转换2

进制转换2

http://www.nowcoder.com/questionTerminal/ae4b3c4a968745618d65b866002bbd32

#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<math.h>

int M,N;
char ans[100];
void MtoN(char *num)
{
    int len = strlen(num);
    long long decimal = 0;
    for(int i = len-1;i>=0;i--) // M转为10进制
    {
        if (isupper(num[i]))
            decimal += (num[i] - 'A'+10) * (long long) pow(M, len - 1 - i);
        else
            decimal += (num[i] - '0') * (long long) pow(M, len - 1 - i);
    }
    int j = 0;
    long long temp;
    while(decimal) //10进制转N进制
    {
        temp = decimal % N;
        if(temp < 10)
            ans[j++] = temp+'0';
        else
            ans[j++] = temp - 10 + 'a';
        decimal /= N;
    }
    for(int i = j-1;i>=0;i--)
        printf("%c",ans[i]);
    return;
}
int main()
{
    scanf("%d %d",&M,&N);
    char num[100];
    scanf("%s",num);
    MtoN(num);
    return 0;
}
全部评论

相关推荐

Pandaileee:校友加油我现在也只有一个保底太难了
点赞 评论 收藏
分享
09-27 14:42
已编辑
浙江大学 Java
未来未临:把浙大放大加粗就行
点赞 评论 收藏
分享
10-09 22:05
666 C++
找到工作就狠狠玩CSGO:报联合国演讲,报电子烟设计与制造
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务