编辑代码

#include <stdio.h>

long long CF (int m, int n); // 求m的n次方
void reverse (char* b);

int main () {
    
    int x, y, i, j, mid;
    char a[33], b[33];
    scanf("%d %d", &x, &y);
    scanf("%s", a);

    i = 0;
    mid = 0;
    while (a[i] != '\0') i++; // i为位数
    // printf("i = %d\n", i);
    
    for (j = 0; j < i; j++) {
        if (a[j] > '9') {
            mid += (a[j]-55) * CF(x, (i-j-1));
        } else {
            mid += (a[j]-48) * CF(x, (i-j-1));
        }
    }

    printf("mid = %d\n", mid);
    j = 0;
    while (mid > 0) {
        if (mid % y > 9) {
            b[j] = (mid % y) + 55;
        } else {
            b[j] = (mid % y) + 48;
        }
        j++;
        mid /= y;
    }
    
    reverse(b);
    printf("%s", b);

    return 0;
}  

long long CF (int m, int n) {
    int result = 1;
    int i;
    for (i = 0; i < n; i++) result *= m;
    //printf("m = %d\n", m);
    return result;
}

void reverse (char* b) {
    int len = 0, i = 0;
    char c;
    while (b[len] != '\0') len++;
    for (i; i < len/2; i++) {
        c = b[i];
        b[i] = b[len-i-1];
        b[len-i-1] = c;
    }
}