CODEVS3115高精度练习之减法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CODEVS3115高精度练习之减法相关的知识,希望对你有一定的参考价值。

Description

给出两个正整数A和B,计算A-B的值。保证A和B的位数不超过500位。

Input

读入两个用空格隔开的正整数

Output

输出A-B的值

Sample Input

3 12

Sample Output

-9

Hint

两个正整数的位数不超过500位

 

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char Sa[510],Sb[510];
int a[510],b[510];
int main()
{
    cin>>Sa>>Sb;
    int aLen=strlen(Sa),bLen=strlen(Sb);
    int l=max(aLen,bLen);
    if (bLen>aLen || (aLen==bLen && !strcmp(Sa,Sb)))
    {
        swap(Sa,Sb);
        swap(aLen,bLen);
        cout<<"-";
    }
    for (int i=1;i<=aLen;i++) a[i]=Sa[aLen-i]-0;
    for (int i=1;i<=bLen;i++) b[i]=Sb[bLen-i]-0;
    for (int i=1;i<=l;i++)
    {
        a[i]=a[i]-b[i];
        if (a[i]<0)
        {
            a[i]+=10;
            a[i+1]--; 
        }                                                              
    }
    while (!a[l]) l--;
    for (int i=l;i>=1;i--) cout<<a[i];
    return 0;
}

 

以上是关于CODEVS3115高精度练习之减法的主要内容,如果未能解决你的问题,请参考以下文章

3115 高精度练习之减法

3115 高精度练习之减法

18.2.28 codevs3115 高精度练习之乘法

模拟高精度练习之减法

CodeVS 3123 高精度练习之超大整数乘法

codevs 3119 高精度练习之大整数开根 (各种高精+压位)