Description
Input
Output
Sample Input
11111111111111 1111111111
Sample Output
12345679011110987654321
//一开始没有考虑边界情况,导致溢出了
大数乘法模板题
#include <stdio.h> #include <string.h> void mult(char a[],char b[],char s[]) { int i,j,k = 0,alen,blen,sum = 0,res[650][650]={0},flag = 0; char result[650]; alen = strlen(a); blen = strlen(b); for(i = 0;i<alen;i++) { for(j = 0;j<blen;j++) res[i][j] = (a[i]-'0')*(b[j]-'0'); } for(i = alen-1;i>=0;i--) { for(j = blen-1;j>=0;j--) { sum = sum+res[i+blen-j-1][j]; } result[k] = sum%10; k++; sum = sum/10; } for(i = blen-2;i>=0;i--) { for(j = 0;j<=i;j++) { sum = sum+res[i-j][j]; } result[k] = sum%10; k++; sum = sum/10; } if(sum) { result[k] = sum; k++; } for(i = 0;i<k;i++) result[i]+='0'; for(i = k-1;i>=0;i--) s[i] = result[k-1-i]; s[k] = '\0'; while(1) { if(strlen(s)!=strlen(a) && s[0] == '0') strcpy(s,s+1); else break; } } int main() { char c[1000],t[1000],sum[100000]; int m; while(~scanf("%s%s",c,t)) { mult(c,t,sum); printf("%s\n",sum); } return 0; }