大整數類——加法
阿新 • • 發佈:2018-12-31
#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:段錯誤,檢查是否有陣列越界,指標異常,訪問到不應該訪問的記憶體區域
這個加法的大整數運算 我是根據乘法寫出來的