- 高精度乘法
- 2014-10-15 20:21:20 @
为什么这个程序过不了?
#include<iostream>
#include <string>
using namespace std;
string a1,b1;
int a[10000+5],b[10000+5];
int data[100000000+5];
int main()
{
cin>>a1>>b1;
int len1=a1.size();
int len2=b1.size();
for(int i=0;i!=a1.size();++i)
a[i]=a1[len1-i-1]-'0';
for(int i=0;i!=b1.size();++i)
b[i]=b1[len2-i-1]-'0';
for(int i=0;i!=len1;++i)
for(int j=0;j!=len2;++j)
data[i+j]+=a[i]*b[j];
for(int i=0;i!=10000+5;++i)
{
data[i+1]+=data[i]/10;
data[i]%=10;
}
int flag=1;
for(int i=10000000+5;i>=0;--i)
{
if(flag==1&&data[i]==0) continue;
if(flag==1&&data[i]!=0) flag=0;
if(flag==0)
cout<<data[i];
}
cout<<endl;
if(flag==1) cout<<0<<endl;
return 0;
}
1 条评论
-
radia LV 7 @ 2016-02-18 15:25:56
#include <iostream>
using namespace std;
int x[100001],y[100001],s[20000002];
string a,b;
int main()
{
cin>>a;
cin>>b;
int i,j,la,lb;
la=a.size();lb=b.size();
for(i=0;i<la;i++)
x[i]=(int)a[la-i-1]-48;
for(i=0;i<lb;i++)
y[i]=(int)b[lb-i-1]-48;
for(i=0;i<10001;i++)
for(j=0;j<10001;j++)
s[i+j]=s[i+j]+x[i]*y[j];
for(i=0;i<20002;i++)
{
s[i+1]=s[i+1]+s[i]/10;
s[i]=s[i]%10;
}
for(i=2000;i>0;i--)
{
if(s[i]!=0)
break;
}
for(i=i;i>=0;i--)
cout<<s[i];return 0;
}
我也最后一个死活都过不去 同求数据
- 1