算法思想:
1.将大整数倒序储存到数组中(方便进位)
2.对同位相乘后的数取模10,推入结果数组中
3.对同位相乘后的数除以10,作为进位
5.去除可能出现的前导零
4.完成乘法后倒序输出
补充知识:
1、vector相关用法:(可以参考这位博主的文章)
https://blog.csdn.net/wkq0825/article/details/82255984?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164869598016780265480181%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164869598016780265480181&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-2-82255984.142%5Ev5%5Epc_search_insert_es_download,143%5Ev6%5Eregister&utm_term=vector&spm=1018.2226.3001.4187
https://blog.csdn.net/wkq0825/article/details/82255984?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164869598016780265480181%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164869598016780265480181&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-2-82255984.142%5Ev5%5Epc_search_insert_es_download,143%5Ev6%5Eregister&utm_term=vector&spm=1018.2226.3001.4187
2.&引用:
使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,相当于复制了一遍。因此,当参数传递的数据较大时,用引用比用一般变量传递参数的效 率和所占空间都好。
注意:
所写为大整数与int型整数相乘
代码如下:
#include <iostream>
#include <vector>
using namespace std;
vector<int> mul(vector<int> &A,int &b){vector<int> C;int t = 0;//进位 for(int i = 0;i<A.size();i++){t += A[i]*b;C.push_back(t%10);t /= 10;}if(t){C.push_back(t);}while(C.size()>1&&C.back()==0){//去除前导0 C.pop_back();}return C;
}
int main(){vector<int> A,C;string a;int b;cin>>a>>b;for(int i = a.size()-1;i>=0;i--){A.push_back(a[i]-'0');}C = mul(A,b);for(int i = C.size()-1;i>=0;i--){cout<<C[i];}return 0;
}