香港哪里买包最便宜:大整数相乘算法
来源:百度文库 编辑:偶看新闻 时间:2024/05/04 19:54:52
#include
#include
#define N 5
#define M 5
int res[M];
/*****
* Function: 大整数相乘算法
* 参数:
* a: 乘数
* b: 乘数
* n: a的长度
* m: b的长度
* 没有返回值,结果直接放到全局变量res数组中,如果不想要全局变量,也可以在函数中多加一个参数,保存结果。
*****/
void Multiply(char *a,char *b,int n,int m) // 大整数相乘
{
int i,j,temp,t,tt;
int num=0;
memset(res,0,sizeof(res));
for(i=0;i
temp=0;
for(j=0;j
t=(a[n-1-j]-'0')*(b[m-1-i]-'0')+temp;
if(0 == t)
continue;
num = j+i;
tt = res[num]+(t);
res[num] = tt%10;
temp = tt/10;
}
if( temp > 0 )
{
res[++num] += temp;
}
}
for(i=num;i>=0;i--) // 输出结果
printf("%d",res[i]);
printf("\n");
}
int main() // a simple test
{
char a[N],b[N];
scanf("%s%s",a,b);
int len1 = strlen(a);
int len2 = strlen(b);
Multiply(a,b,len1,len2);
return 0;
}