【九度OJ】题目1026:又一版 A+B 解题报告

【九度OJ】题目1026:又一版 A+B 解题报告

标签(空格分隔): 九度OJ


原题地址:http://ac.jobdu.com/problem.php?pid=1026

题目描述:

输入两个不超过整型定义的非负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

Ways

每次都会因为一些细节出错,这个题中,一定要用do while循环保证至少执行一次,否则如果两个数都为0的话,也就会使本次无输出。这也就说明,要针对特例情况充分考虑到,否则因为一个特例会导致全盘皆输。

本题方法简单,算出两数的和,然后把这个数翻转就好了。要记录这个数的位数,再次翻转就很方便了。

#include <stdio.h>

int main() {
    int m;
    while (scanf("%d", &m) != EOF && m != 0) {
        long long a, b;
        scanf("%lld%lld", &a, &b);
        a = a + b;
        int arr[100];
        int size = 0;
        do {//如果a=0的话,也要执行一次
            arr[size++] = a % m;
            a /= m;
        } while (a > 0);//至少执行一次
        for (int i = size - 1; i >= 0; i--) {
            printf("%d", arr[i]);
        }
        printf("\n");
    }

    return 0;
}

Date

2017 年 3 月 5 日

posted @ 2017-03-06 13:32  负雪明烛  阅读(24)  评论(0编辑  收藏  举报