高精度减模板(p2142)

P2142 高精度减法

题目描述

高精度减法。

输入格式

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

输出格式

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

输入输出样例 #1

输入 #1

2
1

输出 #1

1

说明/提示

  • \(20\%\) 数据 \(a,b\) 在 long long 范围内;
  • \(100\%\) 数据 \(0<a,b\le 10^{10086}\)

AC代码

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6;
char a[maxn],b[maxn];
int ai[maxn],bi[maxn],c[2*maxn];
int len;

void gc(char a[],char b[]){
    int alen=strlen(a);
    int blen=strlen(b);
    for(int i=1;i<=alen;i++){
        ai[i]=a[alen-i]-'0';
    }
    for(int i=1;i<=blen;i++){
        bi[i]=b[blen-i]-'0';
    }
    for(int i=1;i<=alen;i++){
        for(int j=1;j<=blen;j++){
            c[i+j-1]+=ai[i]*bi[j];
        }
    }
    for(int i=1;i<alen+blen;i++){
        if(c[i]>9){
            c[i+1]+=c[i]/10;
            c[i]=c[i]%10;
        }
    }
    len=alen+blen;
    while(c[len]==0&&len>1){
        len--;
    }
}


int main(){
    cin>>a>>b;
    gc(a,b);
    for(int i=len;i>=1;i--){
        cout<<c[i];
    }
    return 0;
}
posted @ 2025-11-12 09:34  sadmax11  阅读(3)  评论(0)    收藏  举报