一,题意:
大整数乘法模板题二,思路: 1,模拟乘法(注意"逢十进一") 2,倒序输出(注意首位0不输出) 三,步骤: 如:555 x 35 = 19425 5 5 5 5 5 5 x 3 5 x 3 5 ----------- ==> ---------- 2 7 7 5 25 25 25 + 1 6 6 5 +15 15 15 ------------- ----------------- 1 9 4 2 5 15 40 40 25 逢十进一 --------------- 1 9 4 2 51 #include2 #include 3 using namespace std; 4 const int N = 10010; 5 char a[N],b[N]; 6 int ans[N]; //记录结果的数组 7 int digit; //记录结果的位数 8 9 //模拟乘法的过程 10 void MUL(int len , int len2){11 int l = 0 ;12 for(int i = len2 - 1 ; i >= 0 ; i--){13 int k = l ;14 int m = l ;15 for(int j = len - 1 ; j >= 0 ; j--){16 ans[k++] = (b[i]-'0')*(a[j]-'0') + ans[m++]; //储存的时候为倒序17 }18 l++; //乘完一位,往后移一位相加 19 digit=k; //记录位数20 }21 //进行"逢十进一"操作22 for(int i = 0 ; i<=digit ; i++){23 if(ans[i]>=10){24 ans[i+1] = ans[i+1] + ans[i] / 10 ; 25 ans[i] %=10 ; 26 }27 }28 }29 30 //输出操作31 void print(){32 if(ans[digit]!=0) //判断首位是否为0 33 cout< =0 ; i-- ){ //倒序输出 35 cout< >a>>b){42 int len = strlen(a);43 int len2 = strlen(b);44 memset(ans,0,sizeof(ans));//初始化ans[]为0 45 MUL(len,len2);46 print();47 }48 return 0;49 }
版权声明:本文为博主原创文章,未经博主允许不得转载。