开网站流程,龙岗建设招标局网站,58创业加盟网,郑州做网站公司+卓美目录 1、高精度加法 2、高精度减法 3、高精度乘法 4、高精度除法 1、高精度加法
给定两个正整数#xff08;不含前导 0#xff09;#xff0c;计算它们的和。
输入格式
共两行#xff0c;每行包含一个整数。
输出格式
共一行#xff0c;包含所求的和。
数据范围
1≤… 目录 1、高精度加法 2、高精度减法 3、高精度乘法 4、高精度除法 1、高精度加法
给定两个正整数不含前导 0计算它们的和。
输入格式
共两行每行包含一个整数。
输出格式
共一行包含所求的和。
数据范围
1≤整数长度≤100000
输入样例
12
23输出样例
35
思路
vector数组中存储的一串数字是由低位到高位的低位到高位好操作t用来存储进位
代码
#includeiostream
using namespace std;
#includestring
#includevector
vectorint add(vectorint A,vectorint B)
{if(A.size()B.size())return add(B,A);vectorintC;int t0;for(int i0;iA.size();i){ttA[i];if(iB.size())ttB[i];C.push_back(t%10);tt/10;}if(t)C.push_back(t);return C;
}
int main()
{string a,b;cinab;vectorintA,B;for(int ia.size()-1;i0;i--)A.push_back(a[i]-0);for(int ib.size()-1;i0;i--)B.push_back(b[i]-0);vectorintresadd(A,B);for(int ires.size()-1;i0;i--)coutres[i];return 0;
} 2、高精度减法
给定两个正整数不含前导 0计算它们的差计算结果可能为负数。
输入格式
共两行每行包含一个整数。
输出格式
共一行包含所求的差。
数据范围
1≤整数长度≤1e5
输入样例
32
11输出样例
21
思路
先比较两个数的大小总是用大数减小数如果是结果负数的情况结果res-(B-A)
代码
#includeiostream
using namespace std;
#includestring
#includevector
//judge if AB
bool cmp(vectorint A,vectorint B)
{if(A.size()!B.size())return A.size()B.size();//the position that A.size()B.size()else{for(int iA.size()-1;i0;i--){if(A[i]!B[i])return A[i]B[i];}return true;}
}
vectorint sub(vectorint A,vectorint B)
{//now A is always bigger than B or equal to BvectorintC;int t0;for(int i0;iA.size();i){if(iB.size())tA[i]-B[i]-t;else tA[i]-t;C.push_back((t10)%10);if(t0)t1;else t0;}while(C.size()1 C.back()0)C.pop_back();return C;
}
int main()
{string a,b;cinab;vectorintA,B;for(int ia.size()-1;i0;i--)A.push_back(a[i]-0);for(int ib.size()-1;i0;i--)B.push_back(b[i]-0);if(cmp(A,B)){vectorintressub(A,B);for(int ires.size()-1;i0;i--)coutres[i];}else{vectorintressub(B,A);cout-;for(int ires.size()-1;i0;i--)coutres[i];}return 0;
} 3、高精度乘法
给定两个非负整数不含前导 0 A和 B请你计算 A×B 的值。
输入格式
共两行第一行包含整数 A第二行包含整数 B。
输出格式
共一行包含 A×B 的值。
数据范围
1≤A的长度≤100000 0≤B≤100000
输入样例
2
3输出样例
6
思路
适用于一个大数乘一个小数t用来存储进位
代码
#includeiostream
using namespace std;
#includevector
vectorint mul(vectorint A,int b)
{vectorintC;int t0; for(int i0;iA.size() || t;i){if(iA.size()) tA[i]*b;C.push_back(t%10);t/10;}vectorints{0};if(C.back()!0)return C;else return s;
}
int main()
{string a;int b;cinab;vectorintA;for(int ia.size()-1;i0;i--)A.push_back(a[i]-0);auto Cmul(A,b);for(int iC.size()-1;i0;i--)coutC[i];return 0;
} 4、高精度除法
给定两个非负整数不含前导 0 AB请你计算 A/B 的商和余数。
输入格式
共两行第一行包含整数 A第二行包含整数 B。
输出格式
共两行第一行输出所求的商第二行输出所求余数。
数据范围
1≤A的长度≤100000 1≤B≤10000 B 一定不为 0
输入样例
7
2输出样例
3
1
思路
适用于大数除小数r用来存储余数
代码
#includeiostream
using namespace std;
#includevector
#includealgorithm
vectorint div(vectorint A,int b,int r)
{vectorintC;r0;for(int iA.size()-1;i0;i--){rr*10A[i];C.push_back(r/b);r%b;}reverse(C.begin(),C.end());while(C.size()1C.back()0)C.pop_back();return C;
}
int main()
{string a;int b,r;cinab;vectorintA;for(int ia.size()-1;i0;i--)A.push_back(a[i]-0);auto Cdiv(A,b,r);for(int iC.size()-1;i0;i--)coutC[i];coutendlrendl;return 0;
}