Cod sursa(job #3156117)
Utilizator | Data | 10 octombrie 2023 17:04:23 | |
---|---|---|---|
Problema | Prefix | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.43 kb |
#include<fstream>
using namespace std;
ifstream f("prefix.in");
ofstream o("prefix.out");
int k[1<<20],n,i,j;
char s[1<<20];
int main()
{
for(f>>i;f>>s;) {
for(i=1,j=0;s[i];++i)
if(s[i]==s[j])
k[i]=++j;
else
k[i]=j=(s[i]==s[0]);
for(;i;--i)
if(k[i-1]&&i%(i-k[i-1])==0)
break;
o<<i<<'\n';
}
return 0;
}