Pagini recente » Cod sursa (job #2651693) | Cod sursa (job #2253662) | Cod sursa (job #2697781) | Cod sursa (job #525608) | Cod sursa (job #2447457)
#include <bits/stdc++.h>
#define maxim 1000000
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
int dp[maxim];
int main()
{
int t;
f >> t;
while (t --)
{
string a;
f >> a;
int n = a.length();
dp[0] = -1;
for (int i = 1; i < n; ++ i)
{
int j = i - 1;
while (dp[j] != -1 && a[i] != a[dp[j] + 1])
j = dp[j];
dp[i] = dp[j];
if (a[i] == a[dp[j] + 1])
dp[i] ++;
}
bool ok = 1;
for (int i = n - 1; i >= 0; -- i)
if (dp[i] != -1 && (i + 1) % (i - dp[i]) == 0)
{
ok = 0;
g << i + 1 << '\n';
break;
}
if (ok)
g << 0 << '\n';
}
}