饮溪 @ 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;
输入和处理改成了上面这样