代码求调
查看原帖
代码求调
537934
litjohn楼主2024/1/24 21:27
#include<bits/stdc++.h>
using namespace std;
struct bigint{
    int val[1005],len=1;
    int f = 1;
    void operator= (bigint a){
        len=a.len;
        f=a.f;
        for (int i = 1; i <= a.len; ++i) {
            val[i]=a.val[i];
        }
    }
    void put(){
        if (f==-1)putchar('-');
        for (int i = len; i > 0; --i) {
            putchar(val[i]+'0');
        }
    }
    void read(){
        char ch=getchar();
        while (!isdigit(ch)&&ch!='-'){
            ch=getchar();
        }
        if (ch=='-'){
            f=-1;
            ch=getchar();
        }
        string s;
        s.push_back(ch);
        len++;
        while(isdigit(ch)){
            ch=getchar();
            s.push_back(ch);
            len++;
        }
        for (int i = s.length()-1; i >= 0; i--){
            val[s.length()-i-1]=s[i]-48;
        }
        len-=2;
    }
    bigint operator+ (const bigint b){
        bigint x;
        if (f==b.f){
            x=b;
            x.len=max(len,x.len)+1;
            for (int i = 1; i <= x.len; ++i) {
                x.val[i]+=val[i];
                x.val[i+1]+=x.val[i]/10;
                x.val[i]%=10;
            }
            while (x.val[x.len]==0){
                x.len--;
            }
        }else{

        }
        return x;
    }
};
int main(){
    bigint a,b;
    a.read(),b.read();
    (a+b).put();
    return 0;
}

在a或b<10时答案不正确。提交ac。

2024/1/24 21:27
加载中...