思路
思路见注释
代码
#include <bits/stdc++.h>//万能头
using namespace std;
int main (){
char a1[10000], b1[10000];//2个字符数组,方便输入
// 因数a, 因数b
int a[10000], b[10000], c[10000], la, lb, lc, i, j, x;
// 因数a, 因数b, 积, a的长度,b的长度,c的长度, i, j,进位
memset(a, 0, sizeof(a));//将数组的每个元素赋值为0
memset(a, 0, sizeof(b));//将数组的每个元素赋值为0
memset(a, 0, sizeof(c));//将数组的每个元素赋值为0
cin >> a1 >> b1;//输入因数a,因数b
la = strlen(a1);//长度赋值
lb = strlen(b1);//长度赋值
for(i = 0; i < la; i++){
a[i] = a1[la - 1 - i] - 48;//长度赋值,逆序存储,方便计算
}
for(i = 0; i < lb; i++){
b[i] = b1[la - 1 - i] - 48;//长度赋值,逆序存储,方便计算
}
j = 0;
while(j < lb){//双重循环遍历因数a和因数b的每一个数
x = 0;//进位赋值0
for(i = 0; i < la; ++i){
c[i + j] = a[i] * b[j] + x + c[i + j];//当j>0时,+ c[i + j] 就可以省去后面的加法,在这里直接加上
x = c[i + j] / 10;//进位
c[i + j] = c[i + j] % 10;//当前位的值
}
c[j + la] = x;//循环结束后还有一个进位,在这里补上
j++;
}
lc = lb + la - 1;//一个规律:积的长度 = 因数a的长度 + 因数b的长度 - 1
for(;c[lc] == 0;){
lc--;//通俗一点是:
// for (i = lc; i >= 0; --i){
// if (c[lc] == 0){
// lc--;
// }
// }
// 去掉前导0
}
cout << endl;//换行
for(i = lc; i >= 0; --i){
cout << c[i];//输出
}
return 0;//结束
}
简单~
完结撒花~
有意见和问题请在评论区提出,谢谢!!!