Pagini recente » Cod sursa (job #854468) | Cod sursa (job #160007) | Cod sursa (job #484913) | Cod sursa (job #2357888) | Cod sursa (job #1722745)
using namespace std;
#include <fstream>
#include <vector>
#include <algorithm>
#include <string>
using ll = long long;
using uint = unsigned int;
using ull = unsigned long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
#define Lmax 1000001
int p[Lmax];
char s[Lmax + 1];
int solve();
int main()
{
int t;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
for (fin >> t, fin.get(); t; --t)
{
fin.getline(s + 1, Lmax);
fout << solve() << '\n';
}
fin.close();
fout.close();
return 0;
}
int solve()
{
int i, k, res;
for (res = 0, k = 0, i = 2; s[i]; ++i)
{
while (k > 0 && s[k + 1] != s[i]) k = p[k];
if (s[k + 1] == s[i]) ++k;
p[i] = k;
if (k && k % (i - k) == 0) res = i;
}
return res;
}