乘法
- 数组保存值,最好逆向保存。
- 一个数的第i 位和另一个数的第j 位相乘所得的数,累加到结果的第i+j 位上。这里i, j 都是从右往左,从0 开始数。 ans[i+j]=a[i]∗b[j]; a n s [ i + j ] = a [ i ] ∗ b [ j ] ;
- 数组里保存原始值,最后再处理进位。
例题
描述:
求2^N的值,其中512<=N<=1024。
示例代码:
#include "stdafx.h"
#include <vector>
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
vector<int> res(1,2);//保存结果的逆向序列
for (int i = 1; i < n; i++){
for (int j = res.size()-1; j >=0; j--){
res[j]*=2;
}
if (*(res.end()-1)>9)//最后一位大于9说明总位数要加1
res.push_back(0);
for (int j = 0; j < res.size()-1; j++){
if (res[j]>9){
res[j + 1]++;
res[j] -= 10;
}
}
}
for (int i = res.size() - 1; i >= 0; i--){
cout << res[i];
}
system("pause");
return 0;
}