Sicily 1159. Sum

来源:互联网 发布:单片机的编程软件 编辑:程序博客网 时间:2024/05/11 14:35

1159. Sum

Constraints

Time Limit: 1 secs, Memory Limit: 32 MB

Description

Given several positive integers, calculate the sum of them.

Input

There are several test cases, one line for each case. For each line, the first number, N (N<=100000), is the number of positive numbers and then N positive numbers followed. The sum will not exceed 10100.

Output

Output each sum in a single line without leading zeros.

Sample Input

3 1 2 31 1232 1111111111111111111111111111111111 1111111111111111111111111111111111

Sample Output

6
123
2222222222222222222222222222222222

题意解析:两数相加,但是可能高达100位,不能直接相加,要用高精度的思想。注意进位问题。

这题做了好久,尝试过许多方法,都出现WA。。。只有这个AC,以后有时间再慢慢调试一下其他方法好了==

// Problem#: 1159// Submission#: 2197750// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License// URI: http://creativecommons.org/licenses/by-nc-sa/3.0/// All Copyright reserved by Informatic Lab of Sun Yat-sen University#include<iostream>#include<string>#include<algorithm>#include<cmath>#include<vector>#include<cstring>using namespace std;const int MAXN=101;int n;int main(){    while(cin>>n)    {         int ans[MAXN]={0};         int maxlen=0;         string s1;         while(n--)         {             cin>>s1;             int leny=s1.size();             if(maxlen<leny)maxlen=leny;                 for(int j=leny-1;j>=0;j--)             {                  ans[leny-1-j]+=(s1[j]-'0');             }                         for(int i=0;i<leny-1;i++)             {                   ans[i+1]=ans[i]/10+ans[i+1];                   ans[i]=ans[i]%10;                   }         }         if(ans[maxlen]>0)cout<<ans[maxlen];         for(int i=maxlen-1;i>=0;i--)         {                 cout<<ans[i];                 }         cout<<endl;    }    return 0;}                                 


原创粉丝点击