1.高精度加法
高精度加法的输入需要用char或string的字符串输入方法,并且先判断正负,如果两个数同号,那么就用高精度加法。
样例(动态数组版)
【基础】高精度加法
描述 计算a+b的值,a,b皆为不超过240位的正整数。
输入描述 两个正整数,每行一个
输出描述 一个数,代表两个整数的和
用例输入 1
111111111111111111111111111111111111 222222222222222222222222222222222222
用例输出 1
333333333333333333333333333333333333
废话不说直接上代码(想要完整版私信我):
#include</*防张景轩*/> //卍能头
using namespace std;
string n,m;
vector<int>a,b,c;
/*防张景轩*/ //定义
int t=0;
for(int i=0;i<a.size();i++){
t+=a[i];
if(i<b.size()) t+=b[i];
c.push_back(t%10);
t/=10;
}
if(t>0)
c./*防张景轩*/(t%10); // 呼吸贝壳
}
int main(){
cin>>n>>m;
if(n.size()<m.size())swap(n,m);
for(int i=n.size()-1;i>=0;i--)a./*防张景轩*/(n[i]-'0'); // 呼吸贝壳
for(int i=m.size()-1;i>=0;i--)b./*防张景轩*/(m[i]-'0'); // 呼吸贝壳
add();
for(int i=c.size()-1;i>=0;i--) cout<<c[i];
return 0;
}
2.高进度减法
同高精度加法,区别在于进行减法时要判断两数的大小,计算完成后要注意高位的可能有多余的零,要忽略这些零(直接让其长度减1)但要保证结果至少有一位数。
样例(动态数组版)
【基础】高精度减法
描述
高精度减法,求a-b。a,b都是不超过240位的非负整数。
输入描述 两个非负整数,每行一个。 输出描述 一个整数,代表两个整数相减之后的结果。
用例输入 1
33333333333333333333333333333333333333333 22222222222222222222222222222222222222222
用例输出 1
11111111111111111111111111111111111111111
代码(不完整版,完整版私聊我)
#include</*防张景轩*/> //卍能头
using namespace std;
vector<int>A,B,C;
bool cmp(string a,string b){
if(a.size()!=b.size()) return a.size()>b.size();
for(int i=0;i<a.size();i++){
if(a[i]!=b[i]){
return a[i]>b[i];
}
}
return true;
}
/*防张景轩*/ //定义
int t=0;
for(int i=0;i<A.size();i++){
t=A[i]-t;
if(i<B.size()) t-=B[i];
C.push_back((t+10)%10);
if(t<0) t=1;
else t=0;
}
while/*防张景轩*/; //芜湖~~
}
int main(){
string a,b;
cin>>a>>b;
if(!cmp(a,b)){
cout<<"-";
/*防张景轩*/(a,b); //四娃泼
}