zyx_dzpd @ 2024-08-31 09:56:16
#include<bits/stdc++.h>
using namespace std;
string s1,s2;
int a[250],c[500],b[250],p=0;
int main()
{
cin>>s1>>s2;
int i,j,l1=s1.size(),l2=s2.size();
for(i=0;i<l1;i++) a[i]=s1[l1-i-1]-'0';
for(i=0;i<l2;i++) b[i]=s2[l2-i-1]-'0';
for(i=0;i<=l1;i++){
for(j=0;j<=l2;j++){
c[j+i]+=a[i]*b[j];
}
}
for(i=0;i<=l1;i++){
if(c[i]>=10){
c[i+1]+=c[i]/10;
c[i]=c[i]%10;
}
}
for(i=l1+l2;i>=0;i--)
if(c[i]!=0){
p=i;
break;
}
for(i=p;i>=0;i--)
// if(c[i]!=0)
cout<<c[i];
cout<<"\n";
return 0;
}
by ikunTLE @ 2024-08-31 10:05:00
@zyx_dzpd 数组开小了
by DreamInk @ 2024-08-31 10:05:04
@zyx_dzpd 是不是要把数组开大点到2010(我没试过)
by _little_Cabbage_ @ 2024-08-31 10:17:05
@zyx_dzpd 需要把数组开到4010(即原要求
by zyx_dzpd @ 2024-08-31 20:34:16
@ikunTLE @_littleCabbage @DreamInk 三位大佬目前没有RE 但有4个WA
by DreamInk @ 2024-09-01 15:05:22
@zyx_dzpd
1.数组还是要开大的
2.这个循环要改
for(i=0;i<=l1;i++){
if(c[i]>=10){
c[i+1]+=c[i]/10;
c[i]=c[i]%10;
}
}
应该是这样↓
i=0;i<=l1+l2;i++
因为你的上面那个循环
c[j+i]+=a[i]*b[j];
所以你要遍历c数组应该到l1+l2结束