小白编程题:R进制转X进制

描述

输入一个R进制的数N,将它转换成X进制的数。

输入

输入数据包含多个测试实例,对于每组测试用例:

分别输入三个整数:R(2 <= R <= 16), N (N的十进制 <= 10^9), X(2 <= X <= 16, X ≠ R) 。

输出

输出转换后的数,每个输出占一行。

输入样例 1 

11 A 10

2 1000 11

2 1111 12

输出样例 1

10

8

13

#include<stdio.h>
#include<string.h>
int ctoi(char c) {
    if (c >= 48 && c <= 57)
        return c - 48;
    else if (c >= 65 && c <= 70)
        return c - 65 + 10;
    return 0;
}
char itoc(long long n){
    if(n>=0&&n<10)
        return n+48;
    else if(n>=10&&n<=16)
        return n+55;
    return 0;
}
int main(){
    //(N)R->(?)10
    int r,x;
    char n[10000];
    while (scanf("%d %s %d", &r, n,&x) != EOF) {
        if(n[0]==48){
            printf("0\n");
            continue;
        }
        long long len = strlen(n);
        long long sum = 0;
        int start = (n[0] == '-') ? 1 : 0;
        for (long long i = start; i < len; i++) {
            sum = sum * r + ctoi(n[i]);
        }
        if(x==10){
            if (n[0] == '-') {
                printf("%lld\n", -sum);
                continue;
            } else {
                printf("%lld\n", sum);
                continue;
            }
        }
    //(N)10->(X)R
        long long a[100]={0};
        int i=0;
        for(;sum!=0;i++){
            a[i]=sum%x;
            sum/=x;
        }
        char m[100]={'\0'};
        for(int t=i-1,z=0;t>=0;t--,z++){
            m[z]=itoc(a[t]);
        }
        if(n[0]==45){
            printf("-");
        }
        puts(m);
    }
    return 0;
}

posted @   椰萝Yerosius  阅读(2)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示