地址:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1047
题意:大数乘法
代码:
#include <stdio.h> #include <string.h> #include <stdlib.h> char a[260],b[260]; int x[260], y[260], mut[610]; int main() { while(~scanf("%s%s", a, b)) { memset(mut, 0, sizeof(mut)); int i,j,k; int la,lb; la = strlen(a); lb = strlen(b); if(la == 1 && a[0] == '0' || lb == 1 && b[0] == '0') {printf("0\n"); continue;} for(i = la-1, j = 0; i >= 0; i--, j++) x[j] = a[i]-'0'; for(i = lb-1, j = 0; i >= 0; i--, j++) y[j] = b[i]-'0'; for(i = 0; i < la; i++) for(j = 0; j < lb; j++) { k = i+j; mut[k] += x[i]*y[j]; while(mut[k] > 9) { mut[k+1] += mut[k]/10; mut[k] %= 10; k++; } } k = 0; for(i = 600; i >= 0; i--) { if(!k && mut[i]) k = 1; if(k) printf("%d", mut[i]); } printf("\n"); } }