1. 程式人生 > >陣列模擬乘法(大數乘法)

陣列模擬乘法(大數乘法)

A * B Problem

Input

Each line contain two integers A and B. Procss to end of file.(EOF)

Output

For each case, Please output the value of A multiply B

Sample Input 1

3 2
1 5

Sample Output 1

6
5

思路:

用小學數學的乘法的方法,程式碼如下:

#include<stdio.h>
#include<string.h>
int main
() { char arr1[101],arr2[101]; int a[101],b[101],c[201],i,j,k; while(scanf("%s%s",&arr1,&arr2)!=EOF) { int n=strlen(arr1); int m=strlen(arr2); k=n+m;//倆數相乘小於倆數的位數相加 memset(c,0,sizeof(c));//陣列初始化 for(i=0;i<n;i++)a[i]=arr1[n-1-i]-'0';//數倒序儲存到另一個數組 for
(i=0;i<m;i++)b[i]=arr2[m-1-i]-'0'; for(i=0; i<n; i++) for(j=0; j<m; j++) c[i+j]+=a[i]*b[j],c[i+j+1]+=c[i+j]/10,c[i+j]=c[i+j]%10;//相乘和進位 i=k; while(c[i]==0&&i>0)i--;//去掉前導 for(;i>=0;i--)printf("%d",c[i]); printf("\n"); }
return 0; }