WA: Product

和前面的高精度加法一样,实在找不到原因,之前的大数从来没这样的。。

/* UVa 10106 - Product */
# include <stdio.h>
# include <string.h>

# define MAXN 252

char a[MAXN], b[MAXN];
char ss[2 * MAXN];

void pro(char *s);

int main()
{
int lena, lenb, i, j, tmp;

while (~scanf("%s", a))
{
scanf("%s", b);
lena = strlen(a);
lenb = strlen(b);
pro(a);
pro(b);
memset(ss, 0, sizeof(ss));
for (i = 0; i < lena; ++i)
for (j = 0; j < lenb; ++j)
{
tmp = a[i]*b[j] + ss[i+j];
ss[i+j] = tmp % 10;
ss[i+j+1] += tmp / 10;
}
for (i = MAXN-1; i >= 0; --i)
if (ss[i] != 0) break;
if (i < 0) printf("%d", ss[0]);
else while (i >= 0) printf("%d",ss[i--]);
printf("\n");
}

return 0;
}

void pro(char *s)
{
int len, i, c, tmp;
len = strlen(s);
tmp = len / 2;
for (i = 0; i < tmp; ++i)
{
c = s[i] - '0';
s[i] = s[len-1-i] - '0';
s[len-1-i] = c;
}
if (len % 2) s[tmp] -= '0';
}



posted on 2012-03-17 10:47  getgoing  阅读(210)  评论(0编辑  收藏  举报

导航