您的位置:首页 > 其它

1027 大数乘法

2016-06-29 17:13 253 查看
给出2个大整数A,B,计算A*B的结果。

Input

第1行:大数A 第2行:大数B (A,B的长度 <= 1000,A,B >= 0)

Output

输出A*B

Input示例

123456

234567

Output示例

28958703552

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int judge(char* a)
{
int i;
for (i = 0; i < strlen(a); ++i) {
if (a[i] != '0')
return 0;
}
return 1;
}

void multiplicative(char* a, char* b)
{
int lena = strlen(a), lenb = strlen(b);
int len = lena + lenb;
int i, j;
int a1[1005]={0}, b1[10005]={0}, r[10005]={0};

for (i = 0; i < lena; ++i)
a1[i] = a[lena-i-1] - '0';
for (i = 0; i < lenb; ++i)
b1[i] = b[lenb-i-1] - '0';
for (i = 0; i < lena; ++i) {
for (j = 0; j < lenb; ++j) {
r[i+j] += a1[i] * b1[j];
}
}
for (i = 0; i < len; ++i) {
r[i+1] += r[i] / 10;
r[i] = r[i] % 10;
}
while (!r[len-1])
len--;
for (i = 0; i < len; ++i)
a[i] = r[len-i-1] + '0';
if (judge(a))
strcpy(a, "0");
printf("%s", a);
}

int main ()
{
char A[10005], B[10005];
int fa, fb;
scanf("%s%s", A, B);
multiplicative(A, B);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: