• 九度OJ 1198:a+b (大数运算)


    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:6745

    解决:2320

    题目描述:

    实现一个加法器,使其能够输出a+b的值。

    输入:

    输入包括两个数a和b,其中a和b的位数不超过1000位。

    输出:

    可能有多组测试数据,对于每组数据,
    输出a+b的值。

    样例输入:
    2 6
    10000000000000000000 10000000000000000000000000000000
    样例输出:
    8
    10000000000010000000000000000000
    来源:
    2010年华中科技大学计算机研究生机试真题

    思路:

    大数加法,前缀补全0更容易计算。没必要一定转成字符串,也可转成数组。或者直接用字符计算,不转换成数字。


    代码:

    #include <stdio.h>
    #include <string.h>
     
    #define N 1000
     
    int main(void)
    {
        int i, k;
        char s[N+1];
        int a[N+1], b[N+1];
     
        while (scanf("%s", s) != EOF)
        {
            k=0;
            for (i=strlen(s)-1; i>=0; i--, k++)
                a[k] = s[i]-48;
            for (; k<N+1; k++)
                a[k] = 0;
     
            scanf("%s", s);
            k=0;
            for (i=strlen(s)-1; i>=0; i--, k++)
                b[k] = s[i]-48;
            for (; k<N+1; k++)
                b[k] = 0;
     
            for (i=0; i<N+1; i++)
            {
                a[i] += b[i];
                if (a[i] >= 10)
                {
                    a[i+1] ++;
                    a[i] %= 10;
                }
            }
     
            for (i=N; i>=0; i--)
            {
                if (a[i] != 0)
                    break;
            }
            if (i<0)
                printf("0");
            for (; i>=0; i--)
                printf("%d", a[i]);
            printf("
    ");
        }
     
        return 0;
    }
    /**************************************************************
        Problem: 1198
        User: liangrx06
        Language: C
        Result: Accepted
        Time:130 ms
        Memory:912 kb
    ****************************************************************/


    编程算法爱好者。
  • 相关阅读:
    Python—设计模式
    Python—操作系统和多线程
    thin mission 2021 11 3
    搜索
    c++ 调试
    Lecture--words families
    高数--积分
    thin mission 2021.11.2
    tiny mission 2021.11.1
    zlib使用心得
  • 原文地址:https://www.cnblogs.com/liangrx06/p/5083829.html
Copyright © 2020-2023  润新知