高精度乘法
Time Limit:1 Ms| Memory Limit:128 MB
Difficulty:15
Description
Input
Output
Sample Input
Sample Output
Hint
#include<stdio.h>
#include<string.h>
#define N 1005
int ans[N * 3];
int s1[N], s2[N];
int main(){
char tmp[N];
int i, j, k, m;
int len1, len2;
scanf("%s",tmp);
len1 = strlen(tmp);
for(i = len1 - 1, j = 0; i >= 0; i--, j++){
s1[j] = tmp[i] - '0';
}
scanf("%s", tmp);
len2 = strlen(tmp);
for(i = len2 - 1, j = 0; i >= 0; i--, j++){//先轉化爲數字
s2[j] = tmp[i] - '0';
}
for(i = 0,k = 0; i < len1; i++, k++)
for(j = 0, m = k; j < N; j++, m++){//m就相當於進位
ans[m] += s1[i] * s2[j];
ans[m+1] += ans[m] / 10 ;
ans[m] = ans[m] % 10;
}
for(i = N * 3 - 1 ; ans[i] == 0; i--);//輸出
for(j = i; j >= 0 ; j--){
printf("%d", ans[j]);
}
printf("\n");
return 0;
}