60分求救

P1001 A+B Problem

liyuhangyyds @ 2021-08-26 19:53:17

#include<bits/stdc++.h>
using namespace std;
char a[10000],b[10000];
int c[10000],d[10000],ans[10000];
int main()
{
    int i,j=0,k=0,la,lb,x=0;
    cin>>a>>b; 
    la=strlen(a);
    lb=strlen(b);
    for(i=0;i<la;i++)
        c[la-1-i]=a[i]-'0';
    for(i=0;i<lb;i++) 
        d[lb-1-i]=b[i]-'0';
    i=0;
    while(i<=la||i<=lb){
        ans[i]=c[i]+d[i]+x;
        x=ans[i]/10;
        ans[i]=ans[i]%10;
        i++; 
    }
    if(x>0)cout<<x; 
    for(j=i;j>=0;j--){
        if(ans[j]!=0)k=1;
        if(k==1)cout<<ans[j];
    } 
}

突发奇想用高精度写了一下为什么挂了2个点


by vectorli1 @ 2021-08-26 19:57:20

负数


by yuchenren @ 2021-08-26 19:58:35

人生苦短,我用 Python。


by 一SakuRa @ 2021-08-26 20:04:15

@李宇航

负数


by BlackPanda @ 2021-09-10 20:08:58

还有负数


by queen_street @ 2021-09-19 19:05:21

@李宇航 你为啥不用__int128写涅?

#include<bits/stdc++.h>
using namespace std;

__int128_t n,m;

inline __uint128_t read()
{
    __int128_t x=0,f=1;
    char ch=getchar();
    while(ch<'0' || ch>'9')
    {
        if(ch=='-')
        {
            f=-1;
        }
        ch=getchar();
    }
    while(ch>='0' && ch<='9')
    {
        x=x*10+ch-'0';
        ch=getchar();
    }
    return x*f;
}

inline void write(__int128_t x)
{
    if(x<0)
    {
        putchar('-');
        x=-x;
    }
    if(x>9)
    {
        write(x/10);
    }
    putchar(x%10+'0');
}

int main()
{
    int i,j;
    n=read();
    m=read();
    write(n+m);
    return 0;
} 

这个定义方式可以表示-2是¹²⁸到2是¹²⁸的


|