Pagini recente » Cod sursa (job #377101) | Cod sursa (job #2526423) | Cod sursa (job #2142009) | Cod sursa (job #1690388) | Cod sursa (job #2462250)
#include <algorithm>
#include <stack>
#include <queue>
#include <deque>
#include <vector>
#include <string>
#include <set>
#include <map>
#include <cstring>
using namespace std;
//#include <iostream>
#include <fstream>
//ifstream cin ("input.in");
//ofstream cout ("output.out");
ifstream cin ("reguli.in");
ofstream cout ("reguli.out");
static const int NMAX = 5e5+5;
int v[NMAX];
int rule[NMAX];
int pi[NMAX];
int getLength (int n) {
for ( int i = n; i >= 2; --i ) {
if ( pi[i] && !(i%(i-pi[i])) ) {
return i-pi[i];
}
}
}
void kmp (int n) {
for ( int i = 2; i < n; ++i ) {
pi[i] = pi[i-1];
while ( pi[i] && rule[pi[i]+1] != rule[i] ) {
pi[i] = pi[pi[i]];
}
if ( rule[pi[i]+1] == rule[i] ) {
pi[i]++;
}
}
int ans = getLength(n);
cout<<ans<<'\n';
for ( int i = 1; i <= ans; ++i ) {
cout<<rule[i]<<'\n';
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int n;
cin>>n;
for ( int i = 1; i <= n; ++i ) {
cin>>v[i];
}
for ( int i = 2; i <= n; ++i ) {
rule[i-1] = v[i]-v[i-1];
}
kmp(n);
}