only76 @ 2020-06-15 18:44:58
#include<bits/stdc++.h>
using namespace std;
long long a1[100000],b1[100000],c1[100000],x,y,ment1,up1,jishu,ff;
string a,b;
int main()
{
cin>>a>>b;
for(int i=b.length()-1; i>=0; i--)
{
b1[x]=b[i]-48;
x++;
}
for(int i=a.length()-1; i>=0; i--)
{
a1[y]=a[i]-48;
y++;
}
for(int i=0; i<=1000; i++)
{
for(int j=0; j<=1000; j++)
{ c1[i + j] += a1[i] * b1[j];
c1[i + j + 1] += c1[i + j] / 10;
c1[i + j] = c1[i + j] % 10;//
}
}
for(int i=1000; i>=0; i--)
{
if(c1[i]!=0)
{
jishu=i;
break;
}
}
for(int j=jishu; j>=0; j--)
{
cout<<c1[j];
}
}
by Svika @ 2020-06-15 18:46:57
你把1000改成2000试一下
by Wu_Ren @ 2020-06-15 18:47:17
每个数字不超过
只循环
by only76 @ 2020-06-15 18:51:18
是不是要判断是不是负数
by only76 @ 2020-06-15 18:53:29
@bubaegbeiwan 我改成 ```cpp for(int i=0; i<=a.length(); i++) { for(int j=0; j<=b.length(); j++) { c1[i + j] += a1[i] * b1[j]; c1[i + j + 1] += c1[i + j] / 10; c1[i + j] = c1[i + j] % 10; } }
还是不行诶
by only76 @ 2020-06-15 19:06:58
@Wu_Ren 我发现了是结果输出的时候那里 for(int i=1000; i>=0; i--) { if(c1[i]!=0) { jishu=i; break; } } 1000改成a.length()+b.length()+10就行了
by only76 @ 2020-06-15 19:08:07
#include<bits/stdc++.h>
using namespace std;
long long a1[10000],b1[10000],c1[10000],x,y,ment1,up1,jishu,ff;
string a,b;
int main()
{
cin>>a>>b;
for(int i=b.length()-1; i>=0; i--)
{
b1[x]=b[i]-48;
x++;
}
for(int i=a.length()-1; i>=0; i--)
{
a1[y]=a[i]-48;
y++;
}
for(int i=0; i<=a.length(); i++)
{
for(int j=0; j<=b.length(); j++)
{
c1[i + j] += a1[i] * b1[j];
c1[i + j + 1] += c1[i + j] / 10;
c1[i + j] = c1[i + j] % 10;
}
}
for(int i=a.length()+b.length()+10; i>=0; i--)
{
if(c1[i]!=0)
{
jishu=i;
break;
}
}
for(int j=jishu; j>=0; j--)
{
cout<<c1[j];
}
}
by Svika @ 2020-06-15 21:17:13
@only76
#include<bits/stdc++.h>
using namespace std;
int a[10001],b[10001],c[10001];
char n1[10001],n2[10001];
int main()
{
cin>>n1>>n2;
int lena=strlen(n1),lenb=strlen(n2),i,x;
for(i=0;i<lena;i++)a[lena-i]=n1[i]-'0';
for(i=0;i<lenb;i++)b[lenb-i]=n2[i]-'0';
for(int i=1;i<=lena;i++)
{
x=0;
for(int j=1;j<=lenb;j++)
{
c[i+j-1]+=a[i]*b[j]+x;
x=c[i+j-1]/10;
c[i+j-1]%=10;
}
c[i+lenb]=x;
}
int lenc=lena+lenb;
while(c[lenc]==0&&lenc>1)lenc--;
for(int i=lenc;i>=1;i--)cout<<c[i];
return 0;
}
我直接把我的发上来吧,要不要抄是你自己的事,仅供参考
by Svika @ 2020-06-15 21:17:59
好吧,你已经过了