# PBinfo #861 – Dublare – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: Darius

## Enunț

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.

## Cod sursă C++

```cpp
#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;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/861)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/861/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-861/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
