高精度减法,大佬,求调
  • 板块题目总版
  • 楼主AaA121
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/8/8 17:48
  • 上次更新2024/8/8 17:56:12
查看原帖
高精度减法,大佬,求调
1007082
AaA121楼主2024/8/8 17:48

有大佬能帮我改一下代码吗,实在不会改了

#include<cmath>
#include<cstring>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i = 0;i < n;i++)
using namespace std;
char a_str[10001],b_str[10001];
int a[10001],b[10001],c[10001];
int main(){
    cin >> a_str >> b_str;
    int a_len = strlen(a_str),b_len = strlen(b_str);
    rep(i,a_len) a[a_len - i] = a_str[i] - '0';
    rep(i,b_len) b[b_len - i] = b_str[i] - '0';    
    int c_len = max(a_len,b_len);
    if(b_len > a_len){
        cout<<"-";
        swap(a_len,b_len);swap(a_str,b_str);
        rep(i,c_len) swap(a[i],b[i]);
    }
    if(a_len == b_len){
        rep(i,c_len){
            if(b[i] > a[i]){
                cout << "-";
                swap(a_len,b_len);swap(a_str,b_str);
                rep(i,c_len) swap(a[i],b[i]);
            }
            else break;
        }
    }
    for(int i = 1;i <= c_len;i++){
        if(a[i] < b[i]){
            a[i] += 10;
            a[i + 1]--; 
        }
        c[i] = a[i] - b[i];
    }
    while(c[c_len] == 0 && c_len > 1) c_len--;
    for(int i = c_len;i > 0;i--) cout << c[i];
    return 0;
}
2024/8/8 17:48
加载中...