高精度过不了?!(求大神讲解!)

P1001 A+B Problem

yuki_lyq @ 2024-07-05 21:30:12


by NC20061226 @ 2024-07-05 21:38:00

代码呢?


by hongche @ 2024-07-05 21:39:21

#include<bits/stdc++.h>
using namespace std;
int a[1005],b[1005],c[505];
int main(){
    string s1,s2;
    cin>>s1;
    cin>>s2;
    int k=s1.size();
    int l=s2.size();
    int x=1;
    for(int i=k-1;i>=0;i--){
        a[x]=s1[i]-'0';
        x++;
    }
    x=1;
    for(int i=l-1;i>=0;i--){
        b[x]=s2[i]-'0';
        x++;
    }
    int r=0;
    int ll=max(k,l);
    for(int i=1;i<=ll;i++){
        c[i]=a[i]+b[i]+r;
        if(c[i]>=10){
            r=1;
            c[i]=c[i]%10;
        }else{
            r=0;
        }
    }
    if(r==1){
        c[++ll]=r;
    }
    while(c[ll]==0){
        ll--;
    }
    for(int i=ll;i>=1;i--){
        cout<<c[i];
    }
    return 0; 
}

这是高精度的板子


by hongche @ 2024-07-05 21:39:53

壶关吗


by gavinliu266 @ 2024-07-05 21:42:26

没有处理负数


by hongche @ 2024-07-05 21:42:52

代码中包含多余信息

40分


by gavinliu266 @ 2024-07-05 21:43:03

@yuki_lyq


by Max_robot @ 2024-07-07 15:31:06

这题不用高精...


by DreamFlyboat @ 2024-07-07 21:50:08

如果你要用高精度的话可以试试介样

#include<bits/stdc++.h>
using namespace std;
string s1,s2,s3;
int l1,l2;
int a,b,c,j;
char ch;
int main()
{
    cin>>s1>>s2;
    l1=s1.size();l2=s2.size();
    if(l1<l2) {swap(s1,s2);swap(l1,l2);}
    for(int i=1;i<=l1-l2;i++) s2='0'+s2;
    j=0;
    for(int i=l1-1;i>=0;i--)
    {
        a=s1[i]-'0';
        b=s2[i]-'0';
        c=a+b+j;
        if(c>=10) {c=c-10;j=1;}
        else      j=0;
        ch=char(c+'0');
        s3=ch+s3;
    }
    if(j==1) s3='1'+s3;
    cout<<s3;
    return 0;
}

高精度模版


by DreamFlyboat @ 2024-07-07 21:54:54

简单一点可以这样

#include<bits/stdc++.h>
using namespace std;
int a,b;//定义,可以int一个c
//int c;
int main(){
  cin>>a>>b;//输入
//c=a+b;cout<<c;这样更好,不容易出错
  cout<<a+b;//直接输出简洁明了
  return 0;
}

不用高精度


by zihao0505 @ 2024-07-13 12:36:31

直接a+b不行吗


|