又是计算器专题,好,但乘法和加减不大一样,本篇全是干货快点收藏!!!(关注也别落下)
AC代码:
#include<iostream>
#include<cmath>
using namespace std;
int main(){
int a[1005]={0},b[1005]={0},c[1005]={0};
string s1,s2;
cin>>s1>>s2;
int lens1,lens2,max1;
lens1=s1.size();
lens2=s2.size();
int flag=0;
for(int i=0;i<lens1;i++){
a[lens1-i-1]=s1[i]-'0';
}
for(int i=0;i<lens2;i++){
b[lens2-i-1]=s2[i]-'0';
}
for(int i=0;i<lens2;i++){
for(int j=0;j<lens1;j++){
c[i+j]+=a[j]*b[i];
if(c[i+j]>=10){
a[i+j+1]+=c[i+j]/10;
c[i+j]=c[i+j]%10;
}
}
}
int len=lens1+lens2;
while(c[len-1]==0&&len>1){
len--;
}
for(int i=len-1;i>=0;i--){
cout<<c[i];
}
}
解题思路:平时列竖式是可以发现a*b的结果的位数为a的位数加b的位数的和结合平时列竖式时的计算方法,相当于模拟了最后去除前导零逆序输出,其他与高精加,减相同(高精加减在主页)