P1121 大整数减法

P1121 大整数减法

思路

高精度减法

#include <bits/stdc++.h>
using namespace std;
const int maxn=206;

int n[maxn],m[maxn],ans[maxn];
int main(int argc, char const *argv[]) {
    string a,b;
    while (cin>>a>>b) {
        for(int i=0;i<maxn;i++) ans[i]=0;
        int len=a.length(),length=b.length();
        for(int i=0;i<len;i++){
            n[i]=a[len-i-1]-'0';
        }
        for(int j=0;j<length;j++){
            m[j]=b[length-j-1]-'0';
            // std::cout << m[j] << '\n';
        }
        int flag=0;
        // flag=1 那就是 a,n大 ,0就是 b,m大
        if(len>length) flag=1;
        else if(len==length) flag=2;
        if(flag==2){
            if(a>b) flag=1;
            else flag=0;
        }
        int c=len;
        if(!flag) c=length;
        if(flag){
            for(int i=0;i<c;i++){
                if(n[i]<m[i]){
                    n[i]+=10;
                    n[i+1]--;
                }
                ans[i]=n[i]-m[i];
            }
        }
        else {
            for(int i=0;i<c;i++){
                if(m[i]<n[i]){
                    m[i]+=10;
                    m[i+1]--;
                }
                ans[i]=m[i]-n[i];
            }
        }
        while (!ans[c]&&c>=0) c--;
        for(int i=c;i>=0;i--)
            std::cout << ans[i];
        std::cout  << '\n';
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值