Pagini recente » Cod sursa (job #633067) | Cod sursa (job #760083) | Cod sursa (job #1575796) | Cod sursa (job #2920133) | Cod sursa (job #1405027)
#include <fstream>
using namespace std;
ifstream fin("reguli.in");
ofstream fout("reguli.out");
typedef long long i64;
const int nmax= 500000;
int n;
i64 dif[nmax+1], pi[nmax+1];
void prefix( ) {
for ( int i= 2, k= 0; i<=n; ++i ) {
for ( ; k>0 && dif[k+1]!=dif[i]; k= pi[k] ) ;
if ( dif[k+1]==dif[i] ) {
++k;
}
pi[i]= k;
}
}
int main( ) {
fin>>n;
i64 x, last;
for ( int i= 1; i<=n; ++i ) {
fin>>x;
dif[i-1]= (i64)x-last;
last= x;
}
--n, dif[0]= 0;
prefix();
int per= 0;
for ( int i= n; i>=1 && per==0; --i ) {
if ( i%(i-pi[i])==0 && pi[n]>=n-i ) {
per= i-pi[i];
}
}
if ( per==0 ) per= n;
fout<<per<<"\n";
for ( int i= 1; i<=per; ++i ) {
fout<<dif[i]<<"\n";
}
return 0;
}