高精度加法:
#include<bits/stdc++.h>
using namespace std;
string a,b;
vector<int>x,y;
vector<int> add(vector<int>x,vector<int>y){
vector<int>z;
int t=0;
for(int i=0;i<x.size()||i<y.size();i++){
if(i>=x.size())t+=y[i];
else if(i>=y.size())t+=x[i];
else t+=x[i]+y[i];
z.push_back(t%10);
t/=10;
}
if(t)z.push_back(t);
return z;
}
int main(){
cin >> a>> b;
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');
}
auto ans=add(x,y);
for(int i=ans.size()-1;i>=0;i--){
cout << ans[i];
}
return 0;
}
高精度加法:
#include<bits/stdc++.h>
using namespace std;
string a,b;
vector<int>x;
vector<int>y;
vector<int>sub(vector<int>x,vector<int>y){
int t=0;
vector<int>z;
for(int i=0;i<x.size();i++){
if(i<y.size())t=x[i]-y[i]-t;
else t=x[i]-t;
z.push_back((t+10)%10);
if(t<0)t=1;
else t=0;
}
while(z.size()>1&&z.back()==0)z.pop_back();
return z;
}
bool cmp(string a,string b){
if(a.size()!=b.size())return a.size()>b.size();
else return a>b;
}
int main(){
cin >> a>> b;
if(!cmp(a,b)){
cout << '-';
swap(a,b);
}
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');
}
auto ans=sub(x,y);
for(int i=ans.size()-1;i>=0;i--){
cout<<ans[i];
}
return 0;
}
高精度乘法(此处是一个比long long最大值大的数乘一个比long long最大值小的数):
#include<bits/stdc++.h>
using namespace std;
string a;
int b;
vector<int>x;
vector<int>f(vector<int>x,int b){
vector<int>y;
int t=0;
for(int i=0;i<x.size();i++){
t+=x[i]*b;
y.push_back(t%10);
t/=10;
}
if(t)y.push_back(t);
while(y.size()>1&&y.back()==0)y.pop_back();
return y;
}
int main(){
cin >> a>> b;
for(int i=a.size()-1;i>=0;i--){
x.push_back(a[i]-'0');
}
auto ans=f(x,b);
for(int i=ans.size()-1;i>=0;i--){
cout << ans[i];
}
return 0;
}
高精度除法(此处是一个比long long最大值大的数除以一个比long long最大值小的数):
#include<bits/stdc++.h>
using namespace std;
string a;
int b;
vector<int>x;
vector<int>f(vector<int>x,int b){
int r=0,t=0;
vector<int>y;
for(int i=x.size()-1;i>=0;i--){
t=r*10+x[i];
r=t%b;
y.push_back(t/b);
}
reverse(y.begin(),y.end());
while(y.size()>1&&y.back()==0)y.pop_back();
return y;
}
int main(){
cin >> a>> b;
for(int i=a.size()-1;i>=0;i--){
x.push_back(a[i]-'0');
}
auto ans=f(x,b);
for(int i=ans.size()-1;i>=0;i--){
cout << ans[i];
}
return 0;
}
石峻帆在2025-04-12 20:48:11追加了内容
第2个是减法