乘法的思路簡單的說就是仍是依靠豎式的原理,有第二個數的第一位乘上上面的所有數,再讓第二個數的第二位乘上上面全部的數,這個操做用一個嵌套循環就能夠完成了,再是進位問題,這個進位和加法有些不一樣,這裏進位的思路是先不進位,將沒進過位的數,也就是一個兩位數存在一個數組的格子裏,而後在後面部分對每一位去mod 9,來去取要進位的部分,往前面一位加上進位的數,而後再在這一位剪掉進了位的部分,而後執行相同的操做對下一位,這裏給出個流程圖作說明。c++
下面👇,是完整代碼數組
#include <bits/stdc++.h> #define N 2001 using namespace std; int main(){ string s1,s2; int a[N],b[N],c[2*N],la,lb; cin>>s1>>s2; la = s1.length(),lb=s2.length(); //cout<<la<<lb; for(int i=0;i<la;i++) a[i]=s1[la-i-1]-'0'; for(int i=0;i<lb;i++) b[i]=s2[lb-i-1]-'0'; for(int i=0;i<la;i++) for(int j=0;j<lb;j++) c[i+j]+=a[i]*b[j]; int l=la+lb; //cout<<l; //return 0; for(int i=0;i<l;i++) { c[i+1]+=c[i]/10; c[i]%=10; } while(c[l-1]==0&&l>1) l--; for(int i=l-1;i>=0;i--) { cout<<c[i]; } return 0; }
顯然個人坑明顯不止這麼多,我反思,咱們繼續ide
仍是第四彈高精度(在這麼多錯),這個位置spa
這裏說的有點問題,不是編譯器,是c++的ide,還有一個問題3d
下面說的是第三彈的,我在第三彈給出的不是所有的隊列操做,但經常使用的就是那些了code
還有,日常我發的博文可能有的底發不嚴謹,你們能夠去個人QQ羣裏說,羣號1031467671,blog
若是你欣賞個人文章,麻煩點個贊,再關注➕一下我,若是有什麼我沒說到的坑,請進羣說明或留言隊列