這份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; }
沒有留言:
張貼留言