两个大数相乘
2009-10-17 15:29
253 查看
# include<stdio.h>
# include<string.h>
# include<malloc.h>
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);
}
# include<string.h>
# include<malloc.h>
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);
}
相关文章推荐
- 两个大数相乘
- JS实现两个大数(整数)相乘 实例代码
- C语言实现两个大数相乘问题
- 两个大数相乘
- 拼多多内推笔试二:数字字符串两个字符串相乘/大数相乘
- (大数乘法)两个至多长度为100的数字相乘
- 两个大数相乘(转)C
- JS实现两个大数(整数)相乘
- C语言实现两个大数相乘
- (转)两个大数相乘
- Java实现两个大数相乘
- 华为2012校园招聘上机题——大数相乘,两个超过100位的大数相乘C语言
- 两个大数相乘(字符串形式)
- Java处理两个大数相乘
- 两个大数相乘的C++实现
- 深入分析C++中两个大数相乘结果不正确的问题
- 华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)
- 两个大数相乘(纯C实现)
- 两个大数相乘-Java