| ||||||||||||||||||||||||
#include <stdio.h> char symbol[256]; /* 数对应的符号 */ int value[256]; /* 符号代表的数 */ void setup() { int j; for (j = 0; j < 10; ++j) { symbol[j] = '0' + j; value['0' + j] = j; } for (j = 10; j < 36; ++j) { symbol[j] = 'A' + j - 10; value['A' + j - 10] = j; value['a' + j - 10] = j; } } long from_base(char *n, int a) { long x = 0; while (*n) { x = a * x + value[*n]; n++; } return x; } char *to_base(long x, char *s, int b) { do { *(--s) = symbol[x%b]; x = x / b; } while (x); return s; } int main() { int a = 0, b = 0; char n[256] = { 0 }; long x = 0; char *p = 0; scanf("%d %s %d", &a, n, &b); setup(); x = from_base(n, a); p = to_base(x, n + 255, b); printf("%s\n", p); return 0; } |