Rezolvare completă PbInfo #861 Dublare

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.

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema Dublare:

#include <iostream>
#include <cstring>
using namespace std;

char s[256];

int cnt(int n)
{
    if( n % 2 == 1 )
        return 0;
    for(int i = 0, j = n - 1 ; i < j ; i ++ , j --)
        if(s[i] != s[j])
            return 0;
    return 1 + cnt(n/2);
}

int main(){
    
    cin.getline(s , 256);
    cout << cnt(strlen(s));
    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #861 Dublare

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #861 Dublare de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!