美文网首页程序员
PAT Basic 1022. D进制的A+B (20)(C语言

PAT Basic 1022. D进制的A+B (20)(C语言

作者: OliverLew | 来源:发表于2017-04-18 11:38 被阅读163次

    我的PAT系列文章更新重心已移至Github,欢迎来看PAT题解的小伙伴请到Github Pages浏览最新内容。此处文章目前已更新至与Github Pages同步。欢迎star我的repo

    题目

    输入两个非负 10 进制整数 AB ( \le 2^{30} -1 ),输出 A+BD ( 1 < D \le 10
    )进制数。

    输入格式:

    输入在一行中依次给出 3 个整数 ABD

    输出格式:

    输出 A+BD 进制数。

    输入样例:

    123 456 8
    

    输出样例:

    1103
    

    思路

    A、B和A+B的范围在32位整型的范围内,因此用int就好不需要担心。

    进制的转换也是很简单的,为了不使用数组,可以从最高位开始输出,这样就要先判断D进制下的位数。

    代码

    最新代码@github,欢迎交流

    #include <stdio.h>
    
    int main()
    {
        int A, B, D, Sum;
        scanf("%d %d %d", &A, &B, &D);
        Sum = A + B;
    
        /* calculate the bits of Sum */
        int power = 1;
        /* use Sum / D >= power to avoid using long int */
        while(Sum / D >= power) power *= D;
    
        /* calculate D-base number. print them on-the-fly */
        for(; power > 0; Sum %= power, power /= D)
            printf("%d", Sum / power);
    
        return 0;
    }
    

    相关文章

      网友评论

        本文标题:PAT Basic 1022. D进制的A+B (20)(C语言

        本文链接:https://www.haomeiwen.com/subject/vbefzttx.html