题目1:高精度加法
题目描述
计算a+b的值,a,b皆为不超过240位的正整数。
输入格式
两个正整数,每行一个
输出格式
一个数,代表两个整数的和
样例输入样例输出标程
/*高精度加法*/
#include
using namespace std;
string s1,s2;
int a[5010]={0},b[5010]={0},c[5010]={0};
int main()
{
cin>>s1>>s2;
int la=s1.size();
int lb=s2.size();
int lc=la>lb?la:lb;
for(int i=0;i
{
a[la-i]=s1[i]-'0';//字符转化成整数
}
for(int i=0;i
{
b[lb-i]=s2[i]-'0';
}
for(int i=1;i
{
c[i]=a[i]+b[i];
}
for(int i=1;i
{
c[i+1]=c[i+1]+c[i]/10;
c[i]=c[i]%10;
}
while(c[lc]==0 && lc>1)//删除前导0
{
lc--;
}
for(int i=lc;i>0;i--)//逆向输出
{
cout
}
return 0;
}题目2:高精度减法题目描述
高精度减法,求a-b。a,b都是不超过240位的非负整数。
输入格式
两个非负整数,每行一个。
输出格式
一个整数,代表两个整数相减之后的结果。
样例输入样例输出标程
#include
using namespace std;
string s1,s2,t;
int a[250]={0},b[250]={0},c[250]={0};
char f;
int main(){
cin>>s1>>s2;
if(s1.size()
f='-';
t=s1;
s1=s2;
s2=t;
}
int la=s1.size();
int lb=s2.size();
int lc=la>lb?la:lb;
for(int i=0;i
a[la-i]=s1[i]-'0';
}
for(int i=0;i
b[lb-i]=s2[i]-'0';
}
for(int i=1;i
if(a[i]
a[i]=a[i]+10;
a[i+1]=a[i+1]-1; //向后借一位
}
c[i]=a[i]-b[i];//逐位相减
}
while(c[lc]==0&&lc>1){//删除前导0
lc--;
}
if(f=='-')cout
for(int i=lc;i>0;i--){
cout
}
if(lc
return 0;
}题目3:高精度乘法题目描述
高精度乘,求两个很大的非负整数相乘的结果。
输入格式
2个非负整数,每个一行,每个整数不超过240位。
输出格式
一个整数,表示相乘的结果。
样例输入样例输出标程
#include
using namespace std;
string s1,s2;
int a[500]={0},b[500]={0},c[500]={0};
int main(){
cin>>s1>>s2;
int la=s1.length();
int lb=s2.length();
int lc=la+lb;
for(int i=0;i
a[la-i]=s1[i]-'0';
}
for(int i=0;i
b[lb-i]=s2[i]-'0';
}
for(int i=1;i
for(int j=1;j
c[i+j-1]+=a[i]*b[j];
}
}
for(int i=1;i
c[i+1]+=c[i]/10;
c[i]=c[i]%10;
}
while(c[lc]==0&&lc>1){//删除前导0
lc--;
}
for(int i=lc;i>=1;i--){//逆向输出
cout
}
return 0;
}题目4:高精度整数除法题目描述
求a/b的结果。已知a,b为10^8范围内的非负整数,求a/b保留前n位小数商的结果。(5.1.72)
输入格式
a b n
输出格式
一行数字
样例输入
97 61 50样例输出标程
#include
using namespace std;
int main(){
int a,b,k,n,i;
cin>>a>>b>>n;
cout
k=a%b;
for(i=0;i
k=k*10;
cout
k=k%b;
}
return 0;
}
爱编程 玩科技 懂教育
#征稿
领取专属 10元无门槛券
私享最新 技术干货