#include <iostream>
using namespace std;
void multiple(char A[], char B[], char C[])
{
int TMP, lenA = -1, lenB = -1;
while (A[++lenA]!='\0') ;
while (B[++lenB]!='\0') ;
int Index, start = lenA+lenB-1; //
.
for (int i = lenB-1; i >= 0; i--)
{
Index = start--;
if (B[i]!='0')
{
int In = 0;
for (int j = lenA-1; j >= 0; j--)
{
TMP = In+(B[i]-'0')*(A[j]-'0')+C[Index]-'0'; //要加上原有的数值。
In = TMP / 10;
C[Index] = TMP % 10 + '0';
Index--;
}
C[Index] = In+'0'; //最后一次的进位问题
}
}
}
int main()
{
char A[] = "21839244444444448880088888889";
char B[] = "38888888888899999999999999988";
cout<<"length of A is : "<<sizeof(A)<<endl;
cout<<"length of B is : "<<sizeof(B)<<endl;
char C[sizeof(A)+sizeof(B)-1]; //一个m位的数乘以一个n位的数,其结果小于等于m+n位。
for (int i = 0; i < sizeof(C)-1; i++)
{
C[i]='0'; //初始化时应该注意初始化为'0',而不是0。
}
C[sizeof(C)-1]='\0';
cout<<"length of C is : "<<sizeof(C)<<endl;
multiple(A,B,C);
for (int i = 0; i < sizeof(C)-1; i++)
{
if (C[i] != '0')
{
cout<<C[i];
}
}
}
大整数的乘法问题
最新推荐文章于 2021-10-04 10:49:44 发布