Pagini recente » Cod sursa (job #1958022) | Cod sursa (job #232187) | Cod sursa (job #2753292) | Cod sursa (job #2906897) | Cod sursa (job #912472)
Cod sursa(job #912472)
#include <stdio.h>
using namespace std;
#define Nmax 500005
long long int n, pi[Nmax], sir[Nmax], minn = Nmax;
void prefix(){
int k = 0;
for(int i = 2; i < n; ++i){
while(sir[i] != sir[k+1] && k > 0) k = pi[k];
if(sir[i] == sir[k+1]) ++k;
pi[i] = k;
}
}
void read(){
scanf("%i", &n);
int x1, x2;
scanf("%i", &x1);
for(int i = 1; i < n; ++i){
scanf("%i", &x2);
sir[i] = x2 - x1;
x1 = x2;
}
fclose(stdin);
}
void solve(){
prefix();
bool found = false;
for(int i = n-1; i > 0 && !found; --i){
if(pi[i] && i%(i - pi[i]) == 0){
if(minn > i - pi[i])
minn = i - pi[i];
}
}
}
void write(){
printf("%i\n", minn);
for(int i = 1; i <= minn; ++i) printf("%i\n", sir[i]);
fclose(stdout);
}
int main(){
freopen("reguli.in", "r", stdin);
freopen("reguli.out", "w", stdout);
read();
solve();
write();
return 0;
}