這份code寫的真的有夠醜...有點不太想放上來= =
#include <stdio.h>
#include <string.h>
int main(void)
{
char n1[300], n2[300], rs[600], temp, carry;
int i, j, len1, len2;
while (gets(n1) != NULL) {
gets(n2);
len1 = strlen(n1);
len2 = strlen(n2);
for (i = 0; i < 600; ++i)
rs[i] = 0;
for (i = 0; i < len1; ++i)
n1[i] -= '0';
for (i = 0; i < len2; ++i)
n2[i] -= '0';
for (i = 0; i < len1 / 2; ++i) {
temp = n1[i];
n1[i] = n1[len1-i-1];
n1[len1-i-1] = temp;
}
for (i = len1; i < 300; ++i)
n1[i] = 0;
for (i = 0; i < len2 / 2; ++i) {
temp = n2[i];
n2[i] = n2[len2-i-1];
n2[len2-i-1] = temp;
}
for (i = len2; i < 300; ++i)
n2[i] = 0;
for (i = 0; i < 300; ++i) {
carry = 0;
for (j = 0; j < 300; ++j) {
temp = rs[i+j];
rs[i+j] = (temp + n1[j] * n2[i] + carry) % 10;
carry = (temp + n1[j] * n2[i] + carry) / 10;
}
}
i = 600-1;
while (i >= 0 && rs[i] == 0)
--i;
if (i < 0)
printf("0");
else
for (; i >= 0; --i)
putchar(rs[i] + '0');
printf("\n");
}
return 0;
}
沒有留言:
張貼留言