高精度乘法算法(大数乘小数)

高精度乘法(大数乘小数)

思想:把你所需要乘的数(数字位数较小的数看成一个整体),通过大数字与整体想乘所得的数除于10得进位,取余数得到这一位上的数是几、

注意:

高位没数的时候,我们还有进位的时候说明循环还没有结束,需要加上这一个条件继续完成循环。

代码。

#include<iostream>
#include<vector>
#include<algorithm> 
using namespace std;
//高精度乘法 

vector<int>mul(vector<int>&A,int b)
{
	vector<int>c;
	int t=0;
	for(int i=0;i<A.size()||t;i++)//高位数位数乘完或者没有进位时结束循环
	{
		if(i<A.size())t+=A[i]*b;
		c.push_back(t%10);//余数
		t/=10;//进位
	}
	while (c.size() > 1 && c.back() == 0) c.pop_back();
	return c;
}
int main()
{
	string a;
	int b;
	cin>>a>>b;
	vector<int>A;
	for(int i=a.size()-1;i>=0;i--)A.push_back(a[i]-'0');
	vector<int> c=mul(A,b);
	for(int i=c.size()-1;i>=0;i--)printf("%d",c[i]);
}

结果。

在这里插入图片描述

总结。

一定要快点学知识呀,真的是,感觉自己的知识还没到位。


版权声明:本文为qq_56644322原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。