大整数类——加法

#include<bits/stdc++.h>
#define Max 10010
using namespace std;
int main()
{
    int T;
    cin>>T;
    while(T--)
    {
        string a,b;
        cin>>a>>b;
         vector<int>x;
         x.clear();
         vector<int>y;
         y.clear();
         vector<int>z(Max+10,0);
         z.clear();
         for(int i=a.size()-1;i>=0;i--)
            x.push_back(a[i]-'0');
          for(int i=b.size()-1;i>=0;i--)
            y.push_back(b[i]-'0');
        int len;
        if(x.size()>y.size())
        {
            len=y.size();
        }
        else if(y.size()>x.size())
            len=x.size();
        else
            len=x.size();
        for(int i=0;i<len;i++)
        z[i]=x[i]+y[i];
        if(x.size()>y.size())
        {
            for(int i=len;i<x.size();i++)
                z[i]=x[i];
        }
        else if(x.size()<y.size())
            for(int i=len;i<y.size();i++)
            z[i]=y[i];
        for(int i=0;i<Max;i++)
        {
            if(z[i]>=10)
            {
                 z[i+1]=z[i+1]+z[i]/10;
                 z[i]=z[i]%10;
            }
        }
        int flag;
        for(int i=Max;i>=0;i--)
        {
            if(z[i]==0)
                continue;
            else
            {
                flag=i;
                break;
            }
        }
        for(int i=flag;i>=0;i--)
            cout<<z[i];
        cout<<endl;
    }
    return 0;
}

自己运行是对的,但是在oj上是Segmentation fault:段错误,检查是否有数组越界,指针异常,访问到不应该访问的内存区域

这个加法的大整数运算 我是根据乘法写出来的


猜你喜欢

转载自blog.csdn.net/Wchenchen0/article/details/80279848