void chengshu(char *p0, char *a, char b)
{
int i, j = 0, t, n;
char *p, *p1 = p = p0;
n = S(a);
p += n;
*(p + 1) = '\0';
a += n - 1;
for (i = 0; i != n; ++i)
{
t = (*a-- - '0') * (b - '0');
*p = t % 10 + j + '0';
j = 0;
if (*(p) > '9')
*p -= 10, j += 1;
j += t / 10;
--p;
}
*p = j + '0';
if (*p == '0')
{
do
{
*p = *(p + 1);
++p;
}
while (*p);
}
}
void cheng0(char *p, int i)
{
p += S(p);
while (i--)
*p++ = '0';
*p = '\0';
}
void cheng(char *p0, char *a, char *b)
{
int n1 = S(a), n2 = S(b), i, t, j = 1;
char *p, pp[n1 + n2 + 2];
if (n1 < n2)
{
p = a, a = b, b = p;
i = n1, n1 = n2, n2 = i;
}
b += n2 - 1;
*p0 = '0';
*(p0 + 1) = '\0';
for (i = 0; i != n2; ++i)
{
chengshu(pp, a, *b--);
cheng0(pp, i);
jia(p0, p0, pp);
}
}