0基礎學算法 第五彈 填坑

  1.     這個填坑系列,是爲了可以解決你們在前面的疑點,若是你在前面有哪些疑點,能夠加入QQ羣,羣名稱叫球君博客的填坑羣,我要是在博客裏有什麼不足的,或着有什麼講的不清楚的地方,能夠進去發表建議,好今天這期我就來填坑了,昨天有人說第四彈的乘法思路沒講清楚,因此今天我從新講講。

    乘法的思路簡單的說就是仍是依靠豎式的原理,有第二個數的第一位乘上上面的所有數,再讓第二個數的第二位乘上上面全部的數,這個操做用一個嵌套循環就能夠完成了,再是進位問題,這個進位和加法有些不一樣,這裏進位的思路是先不進位,將沒進過位的數,也就是一個兩位數存在一個數組的格子裏,而後在後面部分對每一位去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

若是你欣賞個人文章,麻煩點個贊,再關注➕一下我,若是有什麼我沒說到的坑,請進羣說明或留言隊列

相關文章
相關標籤/搜索