// 大数相乘.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;
// 12345
//* 45
//------
std::string Multiple(std::string &STR1, std::string &STR2)
{
int len = STR1.size()+STR2.size();
int *pResult = new int[len];
int *pStr1 = new int[STR1.size()];
int *pStr2 = new int[STR2.size()];
char *pOutput = new char[len+1];
for (int i = 0; i < len; i++)
{
pResult[i] = 0;
}
memset(pOutput, '\0', len+1);
for (int i = 0; i < STR1.size(); i++)
{
pStr1[i] = STR1[i] - '0';
}
for (int j = 0; j < STR2.size(); j++)
{
pStr2[j] = STR2[j] - '0';
}
int base = 0;
for (int idx = STR2.size()-1; idx >=0; idx--)
{
int kdx = len-1-base;
for (int jdx = STR1.size()-1; jdx >=0; jdx--)
{
pResult[kdx] += pStr2[idx] * pStr1[jdx];
if (pResult[kdx] > 9)
{
pResult[kdx-1] += pResult[kdx]/10;
pResult[kdx] = pResult[kdx] % 10;
}
kdx--;
}
base++;
}
int ii = 0;
int jj = 0;
while (pResult[ii] == 0)
{
ii++;
}
for (; ii < len; ii++)
{
pOutput[jj++] = pResult[ii]+'0';
}
string retString(pOutput);
delete [] pResult;
delete [] pStr1;
delete [] pStr2;
delete [] pOutput;
return retString;
}
int _tmain(int argc, _TCHAR* argv[])
{
string str1 = "1234567890";
string str2 = "1234567890";
string str3;
str3 = Multiple(str1, str2);
cout << str3 << endl;
return 0;
}
大数相乘
最新推荐文章于 2022-02-22 15:28:07 发布