• 十进制大数的加法运算


    输入文件的第一行为一个整数N,表示输入文件中接下来有N组数据,没组数据最多包含100行,每行有一个非常长的十进制整数组成,这个整数的长度不会超过100个字符,而且只包含数字,每组数据的最后一行为0,表示这组数据结束。

    对输入文件的每组数据,输出他们的和。

    此题不同于两大数相加,是多个大数相加的问题,在求和时,有其独到之处:竖式加法

    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    const int M=200;
    using namespace std;
    int main(){
        char buffer[M];
        int array[M][M],answer[M];
        int N,maxn,len,num_integers,carry,sum,digit,l;
        while(cin>>N){
            for(int k=1;k<=N;k++){
            maxn=-1;
            memset(array,0,sizeof(array));
            memset(answer,0,sizeof(answer));
            for(num_integers=0;num_integers<100;num_integers++ ){
                gets(buffer);
                if(strcmp(buffer,"0")==0) break;
                len=strlen(buffer);
                if(len>maxn)
                    maxn=len;
                for(int j=len-1,m=0;j>=0;j--)
                    array[num_integers][m++]=buffer[j]-'0';
            }
            carry=0;
            for(int i=0;i<maxn+2;i++){
                sum=carry;
                for(int j=0;j<num_integers;j++){
                    sum+=array[j][i];
                    digit=sum%10;
                    carry=sum/10;
                    answer[i]=digit;
                }
            }
            for(l=maxn+2;l>=0;l--)
                if(answer[l]!=0)
                    break;
            while(l>=0){
                cout<<answer[l--];
            }
            cout<<endl;
         }
        }
        return 0;
    }
  • 相关阅读:
    MVC的12种ActionResult介绍以及应用示例【转】
    SQL Server抛出异常信息 RAISERROR
    lambda select和where区别
    JS中的原型对象与构造器
    JS原型的动态性
    关于困惑已久的var self=this的解释
    JS原型对象的问题
    再谈.NET委托(delegate、Func<>)
    在函数作用域嵌套下使用this
    Python 易错点
  • 原文地址:https://www.cnblogs.com/wintersong/p/4946974.html
Copyright © 2020-2023  润新知