P2142 高精度减法

2023-06-12,

题目描述

高精度减法

输入输出格式

输入格式:

两个整数a,b(第二个可能比第一个大)

输出格式:

结果(是负数要输出负号)

输入输出样例

输入样例#1:

2
1

输出样例#1:

1

说明

20%数据a,b在long long范围内

100%数据0<a,b<=10的10000次方

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
const int MAXN=100001;
char a1[MAXN],b1[MAXN];
int a[MAXN],b[MAXN];
int ans[MAXN];
int main()
{
scanf("%s%s",a1,b1);
int la=strlen(a1);
int lb=strlen(b1);
if(la<lb||(la==lb&&a1[0]<b1[0]))
{
printf("-");
swap(a1,b1);
swap(la,lb);
}
for(int i=0;i<la;i++)
a[i]=a1[la-i-1]-48;
for(int i=0;i<lb;i++)
b[i]=b1[lb-i-1]-48;
int lc=max(la,lb);
for(int i=0;i<lc;i++)
{
if(a[i]<b[i])
{
a[i+1]--;
a[i]=a[i]+10;
}
ans[i]=a[i]-b[i];
}
int flag=0;
for(int i=lc;i>=0;i--)
{
if(flag==0&&ans[i]==0&&i>0)continue;
else flag=1;
printf("%d",ans[i]);
}
return 0;
}

P2142 高精度减法的相关教程结束。

《P2142 高精度减法.doc》

下载本文的Word格式文档,以方便收藏与打印。