【算法竞赛刷题模板14】大整数乘法
0.总结
Get to the points first. The article comes from LawsonAbs!
- 思想来源于手算乘法;
- 要宏观上把握
multi
函数中for
循环的范围控制,该范围的含义是什么需要清楚;
本文不适合零基础选手
1.要求
实现大整数乘法。
2.实现
主要思想
- step1. 同大整数加减法,以先存低位,再存高位的方法,把一个大整数放到
int
型的数组中。 - step2.做乘法的时候,需要注意代码的写法。【重点】
#include<iostream>
#include<cmath>
using namespace std;
const int maxM = 105;//最多存储505位
int res[maxM],a[maxM] = {4,3,2,1}, b[maxM] = {5,6,7,8};//1234 * 8765;//结果数组 3个中间数组
//两个大整数之间相乘 a[] * b[]
void multi(){
for(int i = 0;i<maxM;i++){
for(int j = 0;j<=i;j++){
res[i] += a[j] * b[i-j];//相乘
}
res[i+1] = res[i]/10;
res[i] %= 10;
}
}
void print(){
int j;
for(j = maxM-1;j>=0;j--){
if(res[j]!=0){
break;
}
}
for(j;j>=0;j--){
cout << res[j];
}
}
int main(){
fill(res,res+maxM,0);
multi();
print();
}