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

若是你欣赏个人文章,麻烦点个赞,再关注➕一下我,若是有什么我没说到的坑,请进群说明或留言队列

相关文章
相关标签/搜索