#include <stdio.h>
#include <string.h>
const int Max = 1000;
int main() {
char str_1[Max], str_2[Max];
memset(str_1, 0, 1000);
memset(str_2, 0, 1000);
while (gets(str_1)) {
gets(str_2);
int count = 0;
int s[2*Max] = {0};
int arr_1[Max] = {0}, arr_2[Max] = {0};
//输入数据
int len_1 = strlen(str_1);
int len_2 = strlen(str_2);
for (int i = 0; i < len_1; i++)
arr_1[i] = str_1[len_1 - i - 1] - '0';
for (int j = 0; j < len_2; j++)
arr_2[j] = str_2[len_2 - j - 1] - '0';
int i, j;
for (i = 0; i < Max; i++) //计算
for (j = 0; j < Max; j++) {
s[i+j] = s[i+j] + arr_1[i] * arr_2[j];
if (s[i+j] >= 10) {
s[i+j+1] += s[i+j] / 10;
s[i+j] = s[i+j] % 10;
}
}
//输出数据
if (str_1[0] == '0' && len_1 == 1 || str_2[0] == '0' && len_2 == 1)
printf("%d", s[i]);
else {
for (i = 2 * Max - 1; i >= 0 ; i--)
if (s[i] != 0)
break;
for (; i >= 0; i--)
printf("%d", s[i]);
}
memset(str_1, 0, 1000);
memset(str_2, 0, 1000);
printf("\n");
}
return 0;
}
/* for (i = 0; i < 2*Max; i++)
s_1[i] = s[Max*2-i-1], printf("%d", s[i]);
printf("\n");
for (i = 0; i < 2*Max; i++)
printf("%d",s_1[i] );
printf("\n");
*/
/*
for (i = 0; i< 2*Max; i++)
if (s_1[i] != 0)
break;
for (; i < 2*Max; i++)
printf("%d",s_1[i] );
printf("\n");
*/
/* if (count)
printf("%d", s[i]);
else if (!count && s[i] == 0)
count = true;
*/
//检查输入的数据是否正确保存
/*
for (int i = 0; i < len_1; i++)
printf("%d", arr_1[i]);
printf("\n");
for (int j = 0; j < len_2; j++)
printf("%d", arr_2[j]);
printf("\n");
puts(str_2);
*/
UVA 10106 (暑假-高精度-A - Product)
最新推荐文章于 2018-04-24 13:27:22 发布