kda_1111 @ 2022-09-14 17:00:37
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int a[2005],b[2005],d[2005][2005],e[2005],t=0;
void init(int c[])
{
string s;
cin>>s;
c[0]=s.length();
for(int i=1;i<=c[0];++i)
c[i]=s[c[0]-i]-'0';
}
int main()
{
init(a);init(b);
for(int i=1;i<=2005;++i)
{
for(int j=1;j<=2005;++j)
{
d[i][j]+=a[i]*b[j];
if(d[i][j]>=10)
{
d[i][j+1]+=d[i][j]/10;//先坐哪一步?
d[i][j]%=10;
}
}
}
for(int m=1;m<=2005;++m)//这里二维数组怎么加在一起
{
for(int n=1;n<=m;++n)
{
e[m]+=d[n][m-n];
}
while(e[m]>=10)
{
e[m]-=10;
e[m+1]+=1;
}
}
for(int i=2005;i>=1;--i)
{
if(e[i]!=0)
{
t=i;
break;
}
}
if(t==0) cout<<"0";
else
{
for(int j=t;j>1;--j)
cout<<e[j];
}
return 0;
}
by _SkyDream_ @ 2022-09-14 17:27:59
大概是...有一个是0就特判0?
by kda_1111 @ 2022-09-14 19:56:42
@horray_for_bfs_dfs 不是 我知道了 是结果数组开小了 2000位*2000位应该开4000位
by kda_1111 @ 2022-09-14 20:06:21
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int a[4014],b[4014],d[4014][4014],e[4014],t=0;
void init(int c[])
{
string s;
cin>>s;
c[0]=s.length();
for(int i=1;i<=c[0];++i)
c[i]=s[c[0]-i]-'0';
}
int main()
{
init(a);init(b);
for(int i=1;i<=4014;++i)
{
for(int j=1;j<=4014;++j)
{
d[i][j]+=a[i]*b[j];
if(d[i][j]>=10)
{
d[i][j+1]+=d[i][j]/10;//先坐哪一步?
d[i][j]%=10;
}
}
}
for(int m=1;m<=4014;++m)//这里二维数组怎么加在一起
{
for(int n=1;n<=m;++n)
{
e[m]+=d[n][m-n];
}
while(e[m]>=10)
{
e[m]-=10;
e[m+1]+=1;
}
}
for(int i=4014;i>=1;--i)
{
if(e[i]!=0)
{
t=i;
break;
}
}
if(t==0) cout<<"0";
else
{
for(int j=t;j>1;--j)
cout<<e[j];
}
return 0;
}
by grgrgr @ 2022-10-02 17:08:21
@kda_1111 改语言(