求助!
  • 板块灌水区
  • 楼主封禁用户
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/3/28 20:43
  • 上次更新2024/3/28 22:21:38
查看原帖
求助!
973480
封禁用户楼主2024/3/28 20:43

如果答案有可能是负数,那我第二个高精度减法该咋改?

#include<bits/stdc++.h>
using namespace std;
char a[1005],b[1005],c[1005];
int d[1005],e[1005],f[1005]={0},g[1005];
void initandjia(char a[], char b[], char c[], int d[], int e[], int f[]){
    cin >> a >> b >> c; 
    int len = max(strlen(b), strlen(c)); 
    for(int i = strlen(b)-1, j = 1; i >= 0; i--, j++) d[j] = b[i] - '0';
    for(int i = strlen(c)-1, j = 1; i >= 0; i--, j++) e[j] = c[i] - '0';
    for(int i = 1; i <= len; i++){
        f[i] += d[i] + e[i];
        f[i+1] += f[i] / 10;
        f[i] %= 10;
    }
    if(f[len+1]) len++; 
}
void jianandoutput(char a[], int f[], int g[]){
    int lenA = strlen(a);
    for(int i = lenA-1, j = 1; i >= 0; i--, j++) g[j] = a[i] - '0';
    int lenF = 0;
    while(f[lenF+1]) lenF++;  
    for(int i = 1; i <= lenA; i++){
        g[i] -= f[i];
        if(g[i] < 0){ 
            g[i] += 10;
            g[i+1]--;
        }
    }
    while(lenA > 1 && g[lenA] == 0) lenA--;
    for(int i = lenA; i > 0; i--) cout << g[i];
    cout << endl;
}

int main(){
    initandjia(a, b, c, d, e, f); 
    jianandoutput(a, f, g); 
    return 0;
}
2024/3/28 20:43
加载中...