Pagini recente » Cod sursa (job #2765006) | Cod sursa (job #89950) | Profil Anton_Constanta_Mihaela_324CC | Cod sursa (job #1636803) | Cod sursa (job #578634)
Cod sursa(job #578634)
#include<fstream>
#define LL long long
using namespace std;
const int MaxN = 500005;
const char InFile[] = "reguli.in";
const char OutFile[] = "reguli.out";
LL s[MaxN];
int N,sol,urm[MaxN];
int KMP()
{
int q,k,T;
T = N-1;
k = 0;
urm[0] = urm[1] = 0;
for( q = 2 ; q < N ; q++ )
{
while( k > 0 && s[q] != s[k+1] )
k = urm[k];
if( s[q] == s[k+1] )
k++;
if( k && !(q%(q-k)) )
T = q-k;
}
return T;
}
int main()
{
ifstream f ( InFile );
ofstream g ( OutFile );
LL x,y;
int i;
f >> N >> x;
for( i = 1 ; i < N ; i++ )
{
f >> y;
s[i] = y-x;
x = y;
}
int T;
T = KMP();
g << T << '\n';
for( i = 1 ; i <= T ; i++ )
g << s[i] << '\n';
f.close();
g.close();
return 0;
}