您的位置:首页 > 其它

multiply of big Number

2012-11-30 10:45 267 查看
void
multiply(const
char
*a,const
char
*b)

24
{

25
int
i,j,ca,cb,*s;

26
ca=strlen(a);

27
cb=strlen(b);

28
s=(int
*)malloc(sizeof(int)*(ca+cb));
//分配存储空间

29
for
(i=0;i<ca+cb;i++)
s[i]=0;
//
每个元素赋初值0

30

31
for
(i=0;i<ca;i++)

32
for
(j=0;j<cb;j++)

33
s[i+j+1]+=(a[i]-'0')*(b[j]-'0');

34

35
for
(i=ca+cb-1;i>=0;i--)
//
这里实现进位操作

36
if
(s[i]>=10)

37
{

38
s[i-1]+=s[i]/10;

39
s[i]%=10;

40
}

41

42
char
*c=(char
*)malloc((ca+cb)*sizeof(char));
//分配字符数组空间,因为它比int数组省!

43
i=0;while(s[i]==0)
i++;
//
跳过头部0元素

44
for
(j=0;i<ca+cb;i++,j++)
c[j]=s[i]+'0';

45
c[j]='\0';

46
for
(i=0;i<ca+cb;i++)
cout<<c[i];

47
cout<<endl;

48
free(s);

49
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: