Cod sursa(job #2538330)
| Utilizator | Data | 4 februarie 2020 17:46:01 | |
|---|---|---|---|
| Problema | Prefix | Scor | 90 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.74 kb |
#include <vector>
#include <string>
#include <fstream>
using namespace std;
ifstream cin("prefix.in");
ofstream cout("prefix.out");
int main(){
long long t;
cin>>t;
while(t--){
string s;
cin>>s;
vector<int> pi(s.size(), 0);
for(size_t x = 1, p = 0;x<s.size();x++){
if(p && (s[x] != s[p]))
p = pi[p - 1];
if(s[x] == s[p])
p++;
pi[x] = p;
}
for(long long x = s.size();x>=1;x--){
if(pi[x - 1] && !(x % (x - pi[x - 1]))){
cout<<x<<'\n';
goto cnt;
}
}
cout<<"0\n";
cnt:continue;
}
return 0;
}
