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;
    }
  • 相关阅读:
    ReportingServices报表管理器实现订阅
    sharepoint部署
    在sharepoint工程中添加引用
    asp:DropDownList选择事件出错
    ETL项目
    javascript refresh page 刷新页面的几种方法(转)
    innerHtml 和 innerText用法:(转载)
    用JavaScript隐藏控件的方法(转)
    JS中onpropertychange事件和onchange事件区别
    Window 对象
  • 原文地址:https://www.cnblogs.com/huashanqingzhu/p/3437167.html
Copyright © 2011-2022 走看看