输入两个非负10进制整数A和B(<=230-1),输出A+B的D (1 < D <= 10)进制数。
输入格式:
输入在一行中依次给出3个整数A、B和D。
输出格式:
输出A+B的D进制数。
输入样例:
123 456 8
输出样例:
1103
提交代码:
1 #include <stdio.h> 2 3 int convert(int a, int b, int c, int *d, int len) 4 { 5 int cnt, x; 6 int calc = a + b; 7 8 cnt = 0; 9 while(calc) 10 { 11 x = calc % c; 12 if(cnt < len) 13 { 14 d[cnt] = x; 15 } 16 calc /= c; 17 cnt++; 18 } 19 return cnt; 20 } 21 22 void reverse(int *d, int len) 23 { 24 int i, tmp; 25 26 for(i = 0; i < len / 2; i++) 27 { 28 tmp = d[i]; 29 d[i] = d[len-i-1]; 30 d[len-i-1] = tmp; 31 } 32 } 33 34 int main(void) 35 { 36 int a, b, c; 37 int d[32]; 38 int i, len; 39 40 scanf("%d %d %d", &a, &b, &c); 41 42 len = convert(a, b, c, d, sizeof(d)/sizeof(d[0])); 43 44 if(len == 0) 45 { 46 printf("0"); 47 } 48 else 49 { 50 reverse(d, len); 51 52 for(i = 0; i < len; i++) 53 { 54 printf("%c", d[i]+'0'); 55 } 56 } 57 return 0; 58 }