您的位置:首页 > 其它

Volume 1. Elementary Problem Solving->Volume 2 Big Number 10106 - Product

2012-11-29 14:01 411 查看
 Product 

The Problem

  The problem is to multiply two integers X, Y. (0<=X,Y<10250)

The Input

  The input will consist of a set of pairs of lines. Each line in pair contains one multiplyer.

The Output

  For each input pair of lines the output line should consist one integer the product.

 

Sample Input

12

12

2

222222222222222222222222

Sample Output

144

444444444444444444444444

题意:高精度乘法

#include<stdio.h>
#include<string.h>
#define m 252
char a[m],b[m];
int ta[m],tb[m],tc[2*m+10];
int main()
{
int i,j,l1,l2;
while(scanf("%s%s",a,b)!=EOF)
{
memset(ta,0,sizeof(ta));
memset(tb,0,sizeof(tb));
memset(tc,0,sizeof(tc));
l1=strlen(a);
l2=strlen(b);
for(i=l1-1;i>=0;i--)
ta[l1-i-1]=a[i]-'0';
for(i=l2-1;i>=0;i--)
tb[l2-i-1]=b[i]-'0';
for(i=0;i<l1;i++)
for(j=0;j<l2;j++)
tc[i+j]+=ta[i]*tb[j];
for(i=0;i<l1+l2;i++)
{
if(tc[i]>=10)
{
tc[i+1]+=tc[i]/10;
tc[i]=tc[i]%10;
}
}
for(i=l1+l2;i>=0;i--)
if(tc[i]!=0)
break;
if(i<0)
printf("0");
for(;i>=0;i--)
printf("%d",tc[i]);
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: