九度OJ 1026:又一版 A+B (进制转换)
- 题目描述:
- 
输入两个不超过整型定义的非负10进制整数A和B(<=231-1),输出A+B的m (1 < m <10)进制数。 
- 输入:
- 
输入格式:测试输入包含若干测试用例。每个测试用例占一行,给出m和A,B的值。
 当m为0时输入结束。
- 输出:
- 
输出格式:每个测试用例的输出占一行,输出A+B的m进制数。
- 样例输入:
- 
8 1300 48 2 1 7 0 
- 样例输出:
- 
2504 1000 
思路:
典型进制转换题,m进制数可以用字符串或整型数组表示,注意进位和数的范围。
进制转换的一种技巧是高位全部置零,这样不用单独判断最高位是多少。
另外一定要注意特殊情况的处理,比如0+0
代码:
#include <stdio.h>
 
int main(void)
{
    int c[20];
    int m, b;
    unsigned int a;
    int i;
 
    while (scanf("%d", &m) != EOF)
    {
        if(m == 0) break;
        scanf("%d%d", &a, &b);
        a += b;
        i = 0;
 
        do
        {
            c[i++] = a % m;
            a /= m;
        }while (a != 0);
        while (i>0)
        {
            printf("%d", c[--i]);
        }
        printf("\n");
    }
 
    return 0;
}
    编程算法爱好者。
 
                    
                 
                
            
         
 浙公网安备 33010602011771号
浙公网安备 33010602011771号