zoukankan      html  css  js  c++  java
  • openjudge计算概论-大整数加法

    /*=====================================================================
    1004:大整数加法
    总时间限制: 1000ms 内存限制: 65536kB
    描述
    求两个不超过200位的非负整数的和。

    输入
    有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。
    输出
    一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
    样例输入
    22222222222222222222
    33333333333333333333
    样例输出
    55555555555555555555

    解析:要注意输入的两个数都是0的情况需要特殊处理输出结果的过程。
    =======================================================================*/

    #include<stdio.h>
    #include<string.h>
    int main()
    {
        char a[203],b[203],c[203];
        int lenA,lenB,min,max,i,j,k;
        int ai,bi,ci;
        bool f=true;
        freopen("add.in","r",stdin);
        //freopen("add.out","w",stdout);
        gets(a);
        gets(b);
        lenA=strlen(a);
        lenB=strlen(b);
        max=(lenA>lenB?lenA:lenB);
        min=(lenA<lenB?lenA:lenB);
        c[max]='';
        ci=0;
        i=lenA-1;
        j=lenB-1;
        k=max-1;
        while(min>0)//注意:这里不能写min>=0 
        {
            ai=a[i]-'0';
            bi=b[j]-'0';
            c[k]=(ai+bi+ci)%10+'0';
            ci=(ai+bi+ci)/10;
            i--;
            j--;
            k--;
            min--;
        }
        if(lenA>lenB)
        {
            for(i=lenA-lenB-1;i>=0;i--)
            {
                c[i]=(a[i]-'0'+ci)%10+'0';
                ci=(a[i]-'0'+ci)/10;
            }
        }
        else if(lenB>lenA)
        {
            for(i=lenB-lenA-1;i>=0;i--)
            {
                c[i]=(b[i]-'0'+ci)%10+'0';
                ci=(b[i]-'0'+ci)/10;
            }
        }
        if(ci!=0)
        {
            printf("%c",ci+'0');
            printf("%s",c);
            f=false;
        }
        else
        {
            for(i=0;i<max;i++)
                if(c[i]!='0')   break;
              for(;i<max;i++)
              {
                f=false;
                  printf("%c",c[i]);
            }
        }
        if(f)//注意:假如输入的两个数都是0,结果就应该是要输出0了。 
            printf("0");
        printf("
    ");
        return 0;
    }
  • 相关阅读:
    Dijkstra-leetcode 743.网络延迟时间
    BFS-leetcode787 K站中转内最便宜的航班
    图论基础——单源最短路径问题
    DFS leetcode-547 朋友圈
    SpringBoot 使用注解向容器中注册Bean的方法总结
    SpringBoot对SpringMVC的支持
    数据源简介
    Spring MVC简介
    2020-2-10 Python 列表切片陷阱:引用、复制与深复制
    2020-2-2 语法糖
  • 原文地址:https://www.cnblogs.com/huashanqingzhu/p/3437167.html
Copyright © 2011-2022 走看看