您的位置:首页 > 其它

大数相乘

2016-07-22 09:28 441 查看
# include <stdio.h>
# include <string.h>

#define MAX 1005

void chtoint(int num[], char ch[], int len);

int main(void)
{
char s1[MAX];
char s2[MAX];
int n;
scanf("%d", &n);
while (n--)
{
int num1[MAX] = {0};
int num2[MAX] = {0};
int cmul[MAX] = {0};
int csum[MAX] = {0};
scanf("%s %s", s1, s2);
int len1 = strlen(s1);
int len2 = strlen(s2);
chtoint(num1, s1, len1);
chtoint(num2, s2, len2);
int i, j, x;
for (i = 0; i < len1; i++)
{
int mul = 0;
int c = 0;
memset(cmul, 0, sizeof(cmul));
for (j = 0; j <= len2; j++)
{
mul = num1[i] * num2[j] + c;
cmul[j] = mul % 10;
//printf("cmul[%d] = %d\n", j, cmul[j]);
c = mul / 10;
//printf("c = %d\n", c);
}
int sum;
int ci = 0;
for (j = 0, x = i; x < MAX , j < MAX; x++)
{
sum = csum[x] + cmul[j++] + ci;
csum[x] = sum % 10;
ci = sum / 10;
}
}
for (i = MAX-1; i >= 0; i--)
{
if (csum[i] != 0)
{
break;
}
}
for (; i >= 0; i--)
{
printf("%d", csum[i]);
}
printf("\n");
}
return 0;
}

void chtoint(int num[], char ch[], int len)
{
int i, j;
for (i = len - 1, j = 0; i >= 0; i--)
{
num[j++] = ch[i] - '0';
}
return ;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息