70,011
社区成员




#include <iostream>
#include <cstring>
#include <malloc.h>
using namespace std;
const int MAX = 1000;//控制输入数据的位数
void multiply(char* a,char* b,char* c)
{
int i,j,ca,cb,* s;
ca=strlen(a);
cb=strlen(b);
s=(int*)malloc(sizeof(int)*(ca+cb));
for (i=0;i<ca+cb;i++)
s[i]=0;
for (i=0;i<ca;i++)
for (j=0;j<cb;j++)
s[i+j+1]+=(a[i]-'0')*(b[j]-'0');
for (i=ca+cb-1;i>=0;i--)
if (s[i]>=10)
{
s[i-1]+=s[i]/10;
s[i]%=10;
}
i=0;
while (s[i]==0)
i++;
for (j=0;i<ca+cb;i++,j++)
c[j]=s[i]+'0';
c[j]='\0';
free(s);
}
int main()
{
char number1[MAX],number2[MAX],*multi;
cout<<"please input number1: "<<endl;
cin>>number1;
cout<<"please input number2: "<<endl;
cin>>number2;
multi=(char*)malloc(strlen(number1)+strlen(number2));
multiply(number1,number2,multi);
cout<<number1<<" * "<<number2<<" = "<<multi<<endl;
return 0;
}
#include <stdio.h>
#include <string.h>
int mulBigNum(char *a,char *b, char *res)
{
int lenA,lenB;
int flag = 0;
int mul;
int temp,i,j;
lenA = strlen(a);
lenB = strlen(b);
for(i=0;i<lenA/2;i++)
{
a[i] -=48;
a[lenA-i-1] -=48;
temp = a[i];
a[i] = a[lenA-i-1];
a[lenA-i-1] = temp;
}
if(lenA%2)
a[lenA/2] -= 48;
for(i=0;i<lenB/2;i++)
{
b[i] -=48;
b[lenB-i-1] -=48;
temp = b[i];
b[i] = b[lenB-i-1];
b[lenB-i-1] = temp;
}
if(lenB%2)
b[lenB/2] -= 48;
for(i=0;i<lenA;i++)
{
mul = a[i];
temp = 0;
for(j=i;j<lenB+i;j++)
{
temp += mul*b[j-i]+res[j];
res[j] = temp%10;
temp = temp/10;
}
while(temp)
{
res[j++] = temp%10;
temp = temp/10;
}
}
return j;
}