高精度加法
#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
#include <cmath>
#include <algorithm>
#include <vector>
using namespace std;
#define mem(f, x) memset(f,x,sizeof(f))
#define sca(x) scanf("%d", &x)
#define sca2(x,y) scanf("%d%d",&x,&y)
#define sca3(x,y,z) scanf("%d%d%d",&x,&y,&z)
#define scl(x) scanf("%lld",&x);
#define pri(x) printf("%d\n", x)
#define prl(x) printf("%lld\n",x);
#define ll long long
int n,m,flag;
int a[111111],t[111111];
const int inf = 1e9;
int main(){
vector<int> A,B,C;
string a,b;
cin>>a>>b;
for(int i=a.size()-1;i>=0;i--)
A.push_back(a[i]-'0');
for(int i=b.size()-1;i>=0;i--){
B.push_back(b[i]-'0');
}
int t=0;
for(int i=0;i<A.size()||i<B.size();i++){
if(i<A.size()) t+=A[i];
if(i<B.size()) t+=B[i];
C.push_back(t%10);
t/=10;
}
if(t>0){
C.push_back(1);
}
for(int i=C.size()-1;i>=0;i--){
cout<<C[i];
}
cout<<endl;
return 0;
}
高精度剑法
#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
#include <cmath>
#include <algorithm>
#include <vector>
using namespace std;
#define mem(f, x) memset(f,x,sizeof(f))
#define sca(x) scanf("%d", &x)
#define sca2(x,y) scanf("%d%d",&x,&y)
#define sca3(x,y,z) scanf("%d%d%d",&x,&y,&z)
#define scl(x) scanf("%lld",&x);
#define pri(x) printf("%d\n", x)
#define prl(x) printf("%lld\n",x);
#define ll long long
int n,m,flag;
int t[111111];
const int inf = 1e9;
vector<int> A,B,C;
bool cmp(vector<int> &A,vector<int> &B){
if(A.size()!=B.size()) return A.size()>B.size();
for(int i=A.size()-1;i>=0;i++)
if(A[i]!=B[i])
return A[i]>B[i];
return 1;
}
vector<int> sub(vector<int> &a,vector<int> &b){
int t=0;
vector<int> C;
for(int i=0;i<a.size();i++){
t=a[i]-t;t-=b[i];
if(t>=0){
C.push_back(t);
t=0;
}
else{
t+=10;
C.push_back(t);
t=1;
}
}
while(C[i]==0&&C.size()>1){
C.pop_back();
}
return C;
}
int main(){
string a,b;
cin>>a>>b;
for(int i=a.size()-1;i>=0;i--) A.push_back(a[i]-'0');
for(int i=b.size()-1;i>=0;i--) B.push_back(b[i]-'0');
if(cmp(A,B)){
C=sub(A,B);
}
else{
C=sub(B,A);
cout<<'-';
}
for(int i=C.size()-1;i>=0;i--)
cout<<C[i];
cout<<endl;
return 0;
}