乘法的思路简单的说就是仍是依靠竖式的原理,有第二个数的第一位乘上上面的所有数,再让第二个数的第二位乘上上面全部的数,这个操做用一个嵌套循环就能够完成了,再是进位问题,这个进位和加法有些不一样,这里进位的思路是先不进位,将没进过位的数,也就是一个两位数存在一个数组的格子里,而后在后面部分对每一位去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
若是你欣赏个人文章,麻烦点个赞,再关注➕一下我,若是有什么我没说到的坑,请进群说明或留言队列