Cerința
Fie un șir de caractere. Prin dublarea șirului înțelege oglindirea sa și concatenarea oglinditului la șirul inițial. De exemplu, prin dublarea șirului arc
se obține șirul arccra
. Orice șir de caractere se poate obține prin dublarea de un număr de ori (eventual de zero ori) a unui șir de caractere.
Se dă un șir de caractere s
. Să se determine numărul maxim de operații de dublare care pot fi aplicate succesiv pentru a obține șirul s
.
Date de intrare
Programul citește de la tastatură șirul s
, format din litere mici ale alfabetului englez.
Date de ieșire
Programul va afișa pe ecran numărul M
, reprezentând numărul maxim de operații de dublare prin care se poate obține s
.
Restricții și precizări
- șirul
s
va avea cel mult255
caractere
Exemplu
Intrare
annaannaannaannaannaannaannaanna
Ieșire
4
Explicație
Șirul inițial este an
. După o dublare, devine anna
. După a doua dublare, șirul devine annaanna
. După a treia dublare șirul devine annaannaannaanna
, iar după a patra dublare șîrul devine annaannaannaannaannaannaannaanna
.
#include <bits/stdc++.h> using namespace std; char s[300]; int main() { cin >> s; int l = strlen(s); int cnt = 0; while(l%2==0) { bool ok = true; for(int i = 0 ; i < l/2 ; ++i) if(s[i]!=s[l-i-1]) ok=false; if(ok) { cnt++; l/=2; } else break; } cout << cnt; return 0; }