大整数乘法的代码被判定为Runtime Error了

有没有大佬能帮帮我,我能运行并且得到正确的结果,但是还是被判定为Runtime Error了

#include <stdio.h>
#include <string.h>
void main()
{
long m, d;
int i, j, k, x, y, n, n1, n2, a[256];
char s1[256], s2[256];
scanf("%s %s", &s1,&s2);
int r=0;
int p=0;

for (i = 0; i < 255; i++)
    a[i] = 0;
n1 = strlen(s1);
n2 = strlen(s2);
d = 0;
for (j = 0, y = n1 - 1; j < n1; j++, y--)
{
    for (k = 0, x = n2 - 1; k < n2; k++, x--)
    {
        i = j + k;
        m = a[i] + (s1[y] - 48)*(s2[x] - 48) + d;
        a[i] = m % 10;
        d = m / 10;
    }
    if (d > 0)
    {
        i++;
        a[i] = a[i] + d % 10;
        d = d / 10;
    }
    n = i;
}
printf("Product :", s1, s2);
for (i = n; i >= 0; i--)
    printf("%d", a[i]);
printf("\n");
system("pause");

}

/*Problem: 2618
User: 032140935
Language: gcc
Result: Runtime Error*/

没什么大问题,见注释,供参考:

#include <stdio.h>
#include <string.h>
#include <windows.h>
void main()
{
    long m, d;
    int i, j, k, x, y, n, n1, n2, a[256];
    char s1[256], s2[256];
    scanf("%s %s", s1, s2); //scanf("%s %s", &s1, &s2);
    int r = 0;
    int p = 0;

    for (i = 0; i < 256; i++) //for (i = 0; i < 255; i++)
        a[i] = 0;
    n1 = strlen(s1);
    n2 = strlen(s2);
    d = 0;
    for (j = 0, y = n1 - 1; j < n1; j++, y--)
    {
        for (k = 0, x = n2 - 1; k < n2; k++, x--)
        {
            i = j + k;
            m = a[i] + (s1[y] - 48) * (s2[x] - 48) + d;
            a[i] = m % 10;
            d = m / 10;
        }
        if (d > 0)
        {
            i++;
            a[i] = a[i] + d % 10;
            d = d / 10;
        }
        n = i;
    }
    printf("Product :%s * %s = ", s1, s2); //修改
    for (i = n; i >= 0; i--)
        printf("%d", a[i]);
    printf("\n");
    system("pause");
}

printf("Product :", s1, s2);

这个?