您的位置:首页 > 其它

大整数乘法

2013-04-22 15:25 211 查看
#include<stdio.h>
#include<string.h>
#define MAXLEN 200

int main(){

unsigned int a[MAXLEN+10],b[MAXLEN+10];
char str1[MAXLEN+10],str2[MAXLEN+10];//用字符数组存储大整数
unsigned int result[MAXLEN*2+10];

memset(str1,0,MAXLEN+10);
memset(str2,0,MAXLEN+10);
memset(result,0,sizeof(result));
scanf("%s",str1);
scanf("%s",str2);

int m=strlen(str1),n=strlen(str2);

int i,j;
//a[] and b[]
for(i=0;i<m;i++)
{
a[i]=str1[m-1-i]-'0';
}

for(j=0;j<n;j++)
{
b[j]=str2[n-1-j]-'0';
}

for(i=0;i<m;i++){
for(j=0;j<n;j++)
{
result[i+j]+=a[i]*b[j];
}

}
for(i=0;i<MAXLEN*2;i++){
if(result[i]>=10){
result[i+1]+=result[i]/10;
result[i]=result[i]%10;
}
}
int flag=1;
for(i=MAXLEN*2;i>=0;i--){
if(flag&&result[i]!=0){
flag=0;
}
if(!flag)printf("%d",result[i]);
}
if(flag){printf("0");}
printf("\n");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: