题解 | 数制转换

#include <stdio.h>
#include<string.h>
#include<ctype.h>
int change(char a){
    if(isdigit(a))
        return a-48;
    else if(isupper(a)) return a-65+10;
        else return a-97+10;
}
char ItC(int a){
    if(a<=9&&a>=0)
        return a+48;
    else return a+65-10;
}
int main() {
    int a,b;
    char n[1000];
    while(scanf("%d %s %d",&a,n,&b)!=EOF){
        if(strcmp(n,"0")==0)
            printf("0");
        else {
            long temp=0;
            for(int i=0;i<strlen(n);i++){
            temp*=a;
            temp+=change(n[i]);
            }
            char result[100];
            int t=0;
            while(temp){
                result[t++]=ItC((temp%b));
                temp/=b;
            }
            for(int j=t-1;j>=0;j--)
                printf("%c",result[j]);
        }
    }
    return 0;
}

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务