本地测对,但是提交全错QAQ

P1303 A*B Problem

饮溪 @ 2017-10-31 20:37:39

交了好几次不对,于是下载了几个数据本地测。。。

明明是对的啊?

比如这个:

如上图,第一个点:本地测输出0

但是评测结果说我的程序输出10?

蒟蒻求助QAQ

下面是冗长的代码:

#include<bits/stdc++.h>
using namespace std;
string st1,st2,st3,st4;
int a[2010],b[2010],ans[4020];
int main()
{
    cin>>st1;
    cin>>st2;
    int lena=st1.size();
    int lenb=st2.size();
    for (int i=1;i<=lena;i++) st3[i]=st1[i-1];
    for (int i=1;i<=lenb;i++) st4[i]=st2[i-1];
    for (int i=1;i<=lena;i++) a[lena-i+1]=st3[i]-48;
    for (int i=1;i<=lenb;i++) b[lenb-i+1]=st4[i]-48;
    int x,l;
    for (int i=1;i<=lena;i++)
    {
        x=0;
        for (int j=1;j<=lenb;j++)
        {
            ans[i+j-1]=ans[i+j-1]+a[i]*b[j]+x;
            x=ans[i+j-1]/10;
            ans[i+j-1]=ans[i+j-1]%10;
            l=j;
        }
        ans[i+l]=x;
    }
    int lenans=lena+lenb;
    while (ans[lenans]==0&&lenans>1) lenans--;
    for (int aa=lenans;aa>=1;aa--) cout<<ans[aa];
    cout<<endl;
    return 0;
}

by Ryuuko @ 2017-10-31 20:50:24

st3和st4没有开空间


by Ryuuko @ 2017-10-31 20:52:35

@Sure 在某些IDE上都RE了


by 饮溪 @ 2017-10-31 21:13:05

蛤?什么叫“没有开空间”?


by 饮溪 @ 2017-10-31 21:13:25

@Tokisaki_Kurumi


by 饮溪 @ 2017-10-31 21:17:20

@Tokisaki_Kurumi

不用st3,st4对了第一个点。。。

然而后面的点自己测还是对的啊。。。

#include<bits/stdc++.h>
using namespace std;
string st1,st2;
int a[2010],b[2010],ans[4020];
int main()
{
    cin>>st1;
    cin>>st2;
    int lena=st1.size();
    int lenb=st2.size();
    for (int i=1;i<=lena;i++) a[lena-i]=st1[i]-48;
    for (int i=1;i<=lenb;i++) b[lenb-i]=st2[i]-48;
    int x,l;
    for (int i=1;i<=lena;i++)
    {
        x=0;
        for (int j=1;j<=lenb;j++)
        {
            ans[i+j-1]=ans[i+j-1]+a[i]*b[j]+x;
            x=ans[i+j-1]/10;
            ans[i+j-1]=ans[i+j-1]%10;
            l=j;
        }
        ans[i+l]=x;
    }
    int lenans=lena+lenb;
    while (ans[lenans]==0&&lenans>1) lenans--;
    for (int aa=lenans;aa>=1;aa--) cout<<ans[aa];
    cout<<endl;
    return 0;
}

by Ryuuko @ 2017-11-01 07:04:19

用char数组


by Ryuuko @ 2017-11-01 07:05:34

@Sure string的空间是动态的,没有赋值就直接访问下标就可能错误


by Ameyax @ 2017-11-01 09:26:47

@Sure 你第二份代码的下标是乱的,string的下标从0开始

for (int i = 0; i < lena; i++) a[lena - i] = st1[i] - 48;


by 饮溪 @ 2017-11-01 13:02:09

神奇了。。。

第一个点输入:

10 0 自测输出0

评测结果是-3-50????

好绝望啊本来只是想刷道水题


by 饮溪 @ 2017-11-01 13:06:57

@[Fire_Storm](/space/show?uid=37070) 
    gets(st1);
    gets(st2);
    int lena=strlen(st1);
    int lenb=strlen(st2);
    for (int i=0;i<lena;i++) a[lena-i]=st1[i]-48;
    for (int i=0;i<lenb;i++) b[lena-i]=st2[i]-48;
输入和处理改成了上面这样

| 下一页