fbpx

Problema #861 – Dublare – Rezolvari PBInfo

de Mihai-Alexandru

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 mult 255 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;
}
Comentarii

S-ar putea sa iti placa