UVA424-整数查询

来源:互联网 发布:网络电话机终端 编辑:程序博客网 时间:2024/04/30 22:30


此题出错的地方是for循环,进位处的
#include <iostream>#include <cstring>using namespace std;int main (){    string st[100];    int i = 0,max = 0;    while(1)    {        getline(cin,st[i++]);        max = max > st[i-1].size()?max:st[i-1].size();        if(st[i-1][0] == '0'&&st[i-1].size()==1)break;    }    int sum[max];    memset(sum,0,sizeof(int)*max);    for(int k = 1; k <= max; k++)    {        for(int j = 0; j < i-1; j++ )        {            int len = st[j].size() - k;            if(len>= 0)            {                sum[max-k] += (st[j][len]-'0');//cout<<st[j][len]<<" ->"<<sum[max-k]<<endl;            }        }    }    for(int k = max; k >= 2; k-- )    {        sum[k-2] += sum[k-1]/10;        sum[k-1]%=10;    }    int f = 0;    for(int y = 0 ; y < max; y++)    {        if(sum[y]==0)        {            if(f)                cout<<0;        }        else        {            f = 1;            cout<<sum[y];        }    }    if(!f)cout<<0;    cout<<endl;    return 0;}

上下界弄的不准确。致使像9999999999+1之类的加法不能准确进位,谨记!!!