#include <iostream>
#include <cstdlib>
using namespace std;
void Multiple(char* num1,char* num2,char* result);
int main()
{
char num1[] = "123";
char num2[] = "999";
int len = strlen(num1) + strlen(num2);
char *result = new char[len + 1];
for (int i = 0; i < len; i++)
{
result[i] = '0';
}
result[len] = 0;
Multiple(num1,num2,result);
cout<<num1<<" * "<<num2<<" = "<<result<<endl;
getchar();
delete []result;
}
void Multiple(char* num1,char* num2,char* result)
{
int len1 = strlen(num1);
int len2 = strlen(num2);
int index;
int a;
int start = len1 + len2 - 1;
for (int i = len2 - 1; i >= 0; i--)
{
index = start--;
if (num2[i])
{
a = 0;
for (int j = len1 - 1; j >= 0; j--)
{
int tmp = (result[index] - '0') + (num1[j] - '0')*(num2[i] - '0') + a;
result[index--] = tmp%10 + '0';
a = tmp/10;
}
result[index] = a + '0';
}
}
int begin = 0;
while ('0' == result[begin]) begin++;
if (begin)
{
int i;
for (i = 0; i < len1 + len2 - begin; i++)
{
result[i] = result[i+begin];
}
result[i + begin - 1] = 0;
}
}
大整数相乘
最新推荐文章于 2021-11-05 21:10:52 发布