见鬼了???在线IDE和devc++中测试的都对,就是全WA

P1303 A*B Problem

StarryFuture @ 2021-02-17 22:20:43

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
int main()
{
    char a1[501],b1[501];int a[501],b[501],c[1001],x=0;
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    memset(c,0,sizeof(c));
    gets(a1);gets(b1);
    for(int i=0;i<strlen(a1);i++)
        a[strlen(a1)-i]=a1[i]-'0';
    for(int i=0;i<strlen(b1);i++)
        b[strlen(b1)-i]=b1[i]-'0';
    int i=1;
    while(i<=strlen(a1)||i<=strlen(b1))
    {
        c[i]=a[i]+b[i]+x;
        x=c[i]/10;
        c[i]=c[i]%10;
        i++;
    }
    c[i]=x;
    while(c[i]==0)i--;
    int c1=i;
    for(int i=c1;i>=1;i--)
        cout<<c[i];
    return 0;
}

为什么!!!为什么!!!为什么!!!为什么!!!为什么!!!


by Silence_water @ 2021-02-17 22:22:47

数组开小了。 题目说了

每个数字不超过 10^{2000},需用高精。


by Silence_water @ 2021-02-17 22:23:02

@奇迹boy


by Silence_water @ 2021-02-17 22:25:49

而且您这在IDE中样例输出不是 -9-3 吗,咋就对了。。。少用 gets


by StarryFuture @ 2021-02-17 22:56:33

@OIer陈奕莱 看错了这是高精度加法的程序,我提交到了乘法里面。


|