九度OJ 1026:又一版 A+B (进制转换)

来源:互联网 发布:类似余罪的网络剧 编辑:程序博客网 时间:2024/05/18 20:09

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:11412

解决:3086

题目描述:

输入两个不超过整型定义的非负10进制整数A和B(<=231-1),输出A+B的m (1 < m <10)进制数。

输入:
输入格式:测试输入包含若干测试用例。每个测试用例占一行,给出m和A,B的值。
当m为0时输入结束。
输出:
输出格式:每个测试用例的输出占一行,输出A+B的m进制数。
样例输入:
8 1300 482 1 70
样例输出:
25041000
来源:
2008年浙江大学计算机及软件工程研究生机试真题

思路:

典型进制转换题,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;}



0 0