C++ 实现大数相乘

旧街凉风 提交于 2021-02-17 19:50:33

这个是使用C++实现的大数相乘功能,使用C++和STL,输入两个string类型的字符串,输出乘积结果。


#include <iostream>
#include <string>
#include <vector>
using namespace std;

string Mul(string str1, string str2);

int main()
{ 
	cout << Mul("99999999", "99999999") << endl;
}

string Mul(string str1, string str2)
{
	int nLen1 = str1.length();
	int nLen2 = str2.length();

	string strRet;
	vector<int> intV;
	intV.resize(nLen1 + nLen2);
	for (int i = nLen1 - 1; i >= 0; i --)
	{
		for (int j = nLen2 - 1; j >= 0; j--)
		{
			intV[i + j + 1] += (str1[i] - '0') * (str2[j] - '0');
		}
	}

	for (int i = nLen1 + nLen2 - 1; i > 0; i --)
	{
		intV[i - 1] += intV[i] / 10;
		intV[i] %= 10;
	}

	for (auto n : intV)
	{
		strRet.push_back(n + '0');
	}

	for (auto n : intV)
	{
		if (n != 0)
		{
			break;
		}

		strRet = strRet.substr(1);
	}
	
	return strRet;
}

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!