整数运算(缺失)
#include<iostream> #include<string> #include<vector> #include<algorithm> using namespace std; //整数加法 void add(string &a,string &b){ if(a.size()<b.size()){ add(b,a); return ; } vector<int> m,n,s; for(int i=a.size()-1;i>=0;i--){ m.push_back(a[i]-'0'); } for(int i=b.size()-1;i>=0;i--){ n.push_back(b[i]-'0'); } int t=0; for(int i=0;i<m.size();i++){ t+=m[i]; if(i<n.size()){ t+=n[i]; } s.push_back(t%10); t/=10; } if(t){ s.push_back(t); } for(int i=s.size()-1;i>=0;i--){ cout<<s[i]; } cout<<endl; return ; } //整数减法 void sub(string &a,string &b){ if(a.size()<b.size()||(a.size()==b.size()&&a<b)){ cout<<"-"; sub(b,a); return ; } vector<int> m,n,s; for(int i=a.size()-1;i>=0;i--){ m.push_back(a[i]-'0'); } while(m.back()==0&&m.size()>1){ m.pop_back(); } for(int i=b.size()-1;i>=0;i--){ n.push_back(b[i]-'0'); } while(n.back()==0&&n.size()>1){ n.pop_back(); } int t=0; for(int i=0;i<m.size();i++){ t=m[i]; if(i<n.size()){ t-=n[i]; } if(t<0){ m[i+1]--; t+=10; } s.push_back(t); } while(s.back()==0&&s.size()>1){ s.pop_back(); } for(int i=s.size()-1;i>=0;i--){ cout<<s[i]; } cout<<endl; return ; } //整数乘法 void mul(string &a,string &b){ vector<int> m,n; for(int i=a.size()-1;i>=0;i--){ m.push_back(a[i]-'0'); } for(int i=b.size()-1;i>=0;i--){ n.push_back(b[i]-'0'); } //初始空间为m.size()+n.size() 初始值是0 vector<int> s(m.size()+n.size(),0); for(int i=0;i<m.size();i++){ for(int j=0;j<n.size();j++){ s[i+j] += m[i]*n[j]; } } int t=0; for(int i=0;i<s.size();i++){ t+=s[i]; s[i]=t%10; t/=10; } while(s.back()==0){ s.pop_back(); } for(int i=s.size()-1;i>=0;i--){ cout<<s[i]; } cout<<endl; return ; } //整数除法:大数除大数 void div_big(string &a,string &b){ } //整数除法:大数除小数 void div_small(string &a,string &b){ } int main(){ string a,b; cin>>a>>b; add(a,b); sub(a,b); mul(a,b); return 0; }