Yzmddsw @ 2021-10-29 12:40:12
本人学了一周,代码写的不好
#include<iostream>
#include<cstdlib>
#include<ctime>
#include<cstdio>
#include<cmath>
#include<string>
using namespace std;
char a[3000],b[3000];
int main()
{
cin>>a>>b;
if(a[0]=='0'||b[0]=='0')
{
cout<<0;
return 0;
}
int stra,strb;
string m=a;
string n=b;
int k=0,s=-1;
int ans[900000000];
int e=m.length();
//cout<<m.length()<<n.length();
if(n.length()>e)e=n.length();
for(int i=m.length();i>0;i--)
{
s++;
k=s;
for(int j=n.length();j>0;j--)
{
ans[k]+=((a[i-1]-'0')*(b[j-1]-'0'))%10;
ans[k+1]+=((a[i-1]-'0')*(b[j-1]-'0'))/10;
if(ans[k]>=10)
{
ans[k+1]++;
ans[k]=ans[k]%10;
}
k++;
}
}
if(ans[k]==0)
{k--;
}
for(int j=k;j>=0;j--)
{
cout<<ans[j];
}
return 0;
}
by sc_iwe @ 2021-10-29 12:47:09
a=int(input())
b=int(input())
print(a*b)
by Starw @ 2021-10-29 13:17:56
特判一下0
by Starw @ 2021-10-29 13:20:21
int ans[900000000];
开小一点,放main
外面
by Yzmddsw @ 2021-11-03 15:50:13
@dz3284 谢谢,主要问题其实是这里
#include<iostream>
#include<cstdlib>
#include<ctime>
#include<cstdio>
#include<cmath>
#include<string>
using namespace std;
char a[2005],b[2005];
int ans[9000000];
int main()
{
cin>>a>>b;
if(a[0]=='0'||b[0]=='0')
{
cout<<0;
return 0;
}
int stra,strb;
string m=a;
string n=b;
int k=0,s=-1;
int e=m.length();
//cout<<m.length()<<n.length();
if(n.length()>e)e=n.length();
for(int i=m.length();i>0;i--)
{
s++;
k=s;
for(int j=n.length();j>0;j--)
{
ans[k]+=((a[i-1]-'0')*(b[j-1]-'0'))%10;
ans[k+1]+=((a[i-1]-'0')*(b[j-1]-'0'))/10;
if(ans[k]>=10)
{
ans[k+1]++;
ans[k]=ans[k]%10;
}
if(ans[k+1]>=10)
{
ans[k+2]++;
ans[k+1]=ans[k+1]%10;
}//这个地方少了一次判断,不然只有一次for可能ans[k+1]>20就会出问题,毕竟是ans++嘛
k++;
}
}
if(ans[k]==0)
{k--;
}
for(int j=k;j>=0;j--)
{
cout<<ans[j];
}
return 0;
}