Pagini recente » Cod sursa (job #124715) | Cod sursa (job #577038) | Cod sursa (job #1573867) | Cod sursa (job #231590) | Cod sursa (job #22702)
Cod sursa(job #22702)
#include <stdio.h>
#define NMAX 100
int N;
int A[NMAX];
int pi[NMAX];
void prefix()
{
int q = 0;
pi[1] = 0;
for (int i = 2; i<=N; ++i)
{
while (q && A[q+1] != A[i])
q = pi[q];
if (A[q+1] == A[i])
++q;
pi[i] = q;
}
}
int main()
{
freopen("reguli.in", "r", stdin);
freopen("reguli.out", "w", stdout);
scanf("%d", &N);
for (int i = 1; i<=N; ++i)
{
scanf("%d", &A[i]);
}
--N;
for (int i = 1; i<=N; ++i)
{
A[i] = A[i+1]-A[i];
}
prefix();
int min = N;
for (int L = 1; L<=N; ++L)
{
int c = N/L;
int r = N%L;
if (pi[N-r]>0 && (N-r) % (N-r-pi[N-r]) == 0 && (N-r) / (N-r-pi[N-r]) == c)
{
min = L;
break;
}
}
printf("%d\n", min);
for (int i = 1; i<=min; printf("%d\n", A[i]), ++i);
}