Определить периодичность последовательности - C (СИ)

Формулировка задачи:

Помогите написать программу по такому условию на Си. Заранее спасибо. Массив A(M) заполнен только нулями и единицами. Определите, будет ли полученная последовательность периодической и, если да, то найдите длину наименьшего периода. В конце массива «неполный» период невозможен. Тест. 1; 0; 0; 0; 1; 0; 0; 0; 1; 0; 0; 0. Результат. Последовательность периодическая. Т=4. Формат входных данных. [M] [1-й элемент массива A] [2-й элемент массива A] и т.д. Элементы массива – целые числа в диапазоне [0, 1]. M - целое число в диапазоне [2, 20]. Формат выходных данных. [количество элементов в наименьшем периоде]. Если последовательность непериодическая, то возвращается 0. Рекомендуемое кол-во циклических операторов (без ввода и вывода данных): 3 (2?) С уважением.

Код к задаче: «Определить периодичность последовательности - C (СИ)»

textual
period(int* seq, int len)
{
    int i, k;
    for (k = 1; k <= len / 2; k++)
        if (len % k == 0)
        {
            for (i = k; i < len; i++)
                if (seq[i] != seq[i%k])
                    break;
            if (i == len)
                return k;
        }
    return 0;
}

14   голосов, оценка 4.214 из 5


СОХРАНИТЬ ССЫЛКУ