您的位置:首页 > 其它

UVA 10106 (暑假-高精度-A - Product)

2014-07-10 00:03 465 查看
#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);
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: