Pagini recente » Cod sursa (job #2873058) | Cod sursa (job #97521) | Cod sursa (job #3163483) | Cod sursa (job #946453) | Cod sursa (job #2117191)
#include <stdio.h>
#define SIZE 500001
static int x[SIZE];
static size_t pi[SIZE];
int main(void)
{
size_t n, i, q;
int prev, c;
freopen("reguli.in", "r", stdin);
freopen("reguli.out", "w", stdout);
scanf("%lu %d", &n, &prev);
for (i = 1; i < n; i++) {
scanf("%d", &c);
x[i] = c - prev;
prev = c;
}
pi[1] = 0;
q = 0;
for (i = 2; i < n; i++) {
while (q > 0 && x[q + 1] != x[i]) {
q = pi[q];
}
if (x[q + 1] == x[i]) {
q++;
}
pi[i] = q;
}
for (i = n - 1; i > 0; i--) {
if (i % (i - pi[i]) == 0) {
printf("%lu\n", i - pi[i]);
for (q = 1; q <= i - pi[i]; q++) {
printf("%d\n", x[q]);
}
break;
}
}
return 0;
}