Pagini recente » Cod sursa (job #159188) | Cod sursa (job #1893305) | Cod sursa (job #2283309) | Cod sursa (job #2515307) | Cod sursa (job #2923697)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("reguli.in");
ofstream fout("reguli.out");
const int N = 5e5;
int v[N + 1], kmp[N + 1], f[N + 1];
void Kmp(int n){
for(int i = 2; i <= n; i++){
int l = kmp[i - 1];
while(l >= 1 && v[l + 1] != v[i])
l = kmp[l];
if(v[l + 1] == v[i])
kmp[i] = l + 1;
}
}
int main(){
/*int n, x0;
fin >> n >> x0, n--;
int sub = 0;
for(int i = 1; i <= n; i++){
fin >> v[i], v[i] -= x0;
v[i] -= sub, sub += v[i];
}*/
string s;
fin >> s;
int n = s.size();
s = "$" + s;
for(int i = 1; i <= n; i++)
v[i] = s[i];
Kmp(n);
int cyc = n - kmp[n];
fout << cyc << '\n';
for(int i = 1; i <= cyc; i++)
fout << v[i] << '\n';
return 0;
}