进制转换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;
}
全部评论

相关推荐

服从性笔试吗,发这么多笔,现在还在发。
蟑螂恶霸zZ:傻 x 公司,发两次笔试,两次部门匹配挂,
投递金山WPS等公司10个岗位 >
点赞 评论 收藏
分享
微风不断:兄弟,你把四旋翼都做出来了那个挺难的吧
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务