大数乘法

数据结构及算法 | 2013-05-27 19:17:43 | 阅读 1953 次 | 评论(0)
#include<stdio.h>
#include <string.h>
void bigintmul(char a[],char b[])
{
int tempa[100]={0},tempb[100]={0},temp[200]={0},carry=0,i,j,m,n,num,k;
m=strlen(a);
n=strlen(b);
num=n+m;

for(i=m-1;i>=0;i--)
    tempa[m-1-i]=a[i]-'0';//a数组的个位保存在temp[0],...

for(i=n-1;i>=0;i--)
    tempb[n-1-i]=b[i]-'0';

for(j=0;j<m;j++)
{
    for(i=0;i<n;i++)
        temp[i+j]+=tempb[i]*tempa[j];
}



for(k=0;k<num;k++)
{

    temp[k]+=carry;
    carry=temp[k]/10;
    temp[k]%=10;
}

if(temp[num-1]) //高位
    printf("%d",temp[num-1]);

for(i=num-2; i>0;i--)
printf("%d",temp[i]); 

}
int main()
{
char a[100],b[100];
printf("a数 : ");
gets(a);
printf("b数 : ");
gets(b);
printf("积数: ");
bigintmul(a,b);
printf("\n");
return 0;
}

文章评论,共0条
游客请输入验证码
浏览176870次
最新评论
  • zhouwenyuan:博主可以开发房产APP吗?
  • qunxingw:结合附件,在分表A或B...实验一下宏就理解了
  • qunxingw:这仅是小范围的一种思路,此题是指数级的数据。