为什么高精度加法不能通过这题?

P1001 A+B Problem

mrbhsj @ 2024-07-27 16:26:54

#include<iostream>
#include<cstring>
using namespace std;
string add(string a,string b){
    string s;
    int la,lb,lc;
    int a1[1000]={},b1[1000]={},c[1000]={};
    la=a.length();
    lb=b.length();
    for(int i=0;i<la;i++){
        a1[i]=a[la-1-i]-'0';
    }
    for(int i=0;i<lb;i++){
        b1[i]=b[lb-1-i]-'0';
    }

    lc=max(la,lb);

    for(int i=0;i<lc;i++){
        c[i]=c[i]+a1[i]+b1[i];
        if(c[i]>=10){
            c[i+1]=c[i+1]+c[i]/10;
            c[i]=c[i]%10;
        }
    }

    if(c[lc]!=0) lc++;

    for(int i=lc-1;i>=0;i--){
        s=s+char(c[i]+48);
    }
    return s;
}
int main(){

    string a,b,c;
    cin>>a>>b;
    c=add(a,b);
    cout<<c;
    return 0;
}

by 违规用户名971024 @ 2024-07-27 16:28:27

注意负数


by Qinglan2011 @ 2024-07-27 16:30:09

@mrbhsj 因为这道题的测试点不喜欢高精度


by mrbhsj @ 2024-07-27 16:30:09

好像也是


by mrbhsj @ 2024-07-27 16:30:36

@Qinglan2011 额。。。


by DreamInk @ 2024-07-27 16:31:03

@mrbhsj |a|,|b|<=1e9,那么a,b很有可能是负数哟


by King_and_Grey @ 2024-07-27 16:32:21

int main(int a,int b){

    __builtin_scanf("%d%d",&a,&b);

    __builtin_printf("%d",a+b);

}

这年头,谁还打头文件 @mrbhsj


by mrbhsj @ 2024-07-27 16:33:12

@King_and_Grey 额。。。


by Terrible @ 2024-07-27 16:35:57

@King_and_Grey

呃呃。使用 C 语言提交可以立省两个 __builtin_


by Grammar__hbw @ 2024-07-27 16:36:38

@Terrible 但是要头文件


by King_and_Grey @ 2024-07-27 16:37:47

@Grammar__hbw 不用头文件直接写main?


| 下一页