首页 > 代码库 > P2142 高精度减法

P2142 高精度减法

题目描述

高精度减法

输入输出格式

输入格式:

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

输出格式:

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

输入输出样例

输入样例#1:
21
输出样例#1:
1

说明

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

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

 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 using namespace std; 6 const int MAXN=100001; 7 char a1[MAXN],b1[MAXN]; 8 int a[MAXN],b[MAXN]; 9 int ans[MAXN];10 int main()11 {12     scanf("%s%s",a1,b1);13     int la=strlen(a1);14     int lb=strlen(b1);15     if(la<lb||(la==lb&&a1[0]<b1[0]))16     {17         printf("-");18         swap(a1,b1);19         swap(la,lb);20     }21     for(int i=0;i<la;i++)22     a[i]=a1[la-i-1]-48;23     for(int i=0;i<lb;i++)24     b[i]=b1[lb-i-1]-48;25     int lc=max(la,lb);26     for(int i=0;i<lc;i++)27     {28         if(a[i]<b[i])29         {30             a[i+1]--;31             a[i]=a[i]+10;32         }33         ans[i]=a[i]-b[i];34     }35     int flag=0;36     for(int i=lc;i>=0;i--)37     {38         if(flag==0&&ans[i]==0&&i>0)continue;39         else flag=1;40         printf("%d",ans[i]);41     }42     return 0;43 }

 

P2142 高精度减法