您的位置:首页 > 其它

pku 2389(大数乘法模板)

2010-02-05 09:13 357 查看
#include <iostream>
#include <cstring>
using namespace std;
void mult(char a[],char b[],char s[])
{
int i,j,k=0,alen,blen,sum=0,res[100][100]={0},flag=0;
char result[100];
alen=strlen(a);blen=strlen(b);

for (i=0;i<alen;i++)
for (j=0;j<blen;j++) res[i][j]=(a[i]-'0')*(b[j]-'0');

for (i=alen-1;i>=0;i--)
{
for (j=blen-1;j>=0;j--) sum=sum+res[i+blen-j-1][j];
result[k]=sum%10;
k=k+1;
sum=sum/10;
}

for (i=blen-2;i>=0;i--)
{
for (j=0;j<=i;j++) sum=sum+res[i-j][j];
result[k]=sum%10;
k=k+1;
sum=sum/10;
}
if (sum!=0) {result[k]=sum;k=k+1;}

for (i=0;i<k;i++) result[i]+='0';
for (i=k-1;i>=0;i--) s[i]=result[k-1-i];
s[k]='/0';

while(1)
{
if (strlen(s)!=strlen(a)&&s[0]=='0')
strcpy(s,s+1);
else
break;
}
}
int main()
{
char a[50],b[50],c[100];
scanf("%s",a);
scanf("%s",b);
mult(a,b,c);
printf("%s/n",c);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: