Получение ошибки SIGSEGV на codechef для этого кода - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь представить решение для проблемы FCTRL2 (https://www.codechef.com/problems/FCTRL2) на codechef. При выполнении кода он иногда выполняется успешно, а иногда выдает ошибку SIGSEGV. Но когда я его отправляю, он всегда показывает неверноответ. Хотя код дает правильный ответ, когда я запускаю его на любой другой IDE.

#include <iostream>
#include <stdio.h>
using namespace std;

int main(void)
{
    int testCases, i, j, k, n, num, digits, carry = 0, temp;
    scanf("%d", &testCases);
    int testArr[160];

    for (i = 0; i < testCases; i++)
    {
        scanf("%d", &n);
        num = n;
        if (n == 0 || n == 1)
        {
            testArr[0] = 1;
            digits = 1;
        }
        else
        {
            k = 0;
            for (j = 10; n != 0; j = j * 10)
            {
                testArr[k] = n % j;
                n = n / j;
                k++;
            }
            digits = k;
            for (j = 1; j < num; j++)
            {
                for (k = 0; k < digits; k++)
                {
                    temp = testArr[k] * j + carry;

                    if (temp > 10)
                    {
                        testArr[k] = temp % 10;
                        carry = temp / 10;
                    }
                    else
                    {
                        testArr[k] = temp;
                        carry = 0;
                    }
                }
                if (carry > 10)
                {
                    testArr[k] = carry % 10;
                    k++;
                    testArr[k] = carry / 10;
                    digits = k + 1;
                    carry = 0;
                }
                else if (carry > 0)
                {
                    testArr[k] = carry;
                    digits = k + 1;
                    carry = 0;
                }
            }
        }

        for (k = (digits - 1); k >= 0; k--)
        {
            printf("%d", testArr[k]);
        }
        printf("\n");
    }
    return 0;
}
...