Informatică, întrebare adresată de Dilau420, 8 ani în urmă

Problema #861 Dublare de pe Pbinfo

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

Iau numai 60 de puncte ,stie cineva de ce?(Primesc raspuns gresit)


Asta e codul:

#include
#include

using namespace std;

int main()
{
char s[258];

cin >> (s + 1);

int n = strlen(s) - 1, cnt = 0, cn;

cn = strlen(s) - 1;

while(n % 2 == 0)
{
cnt++;
n = n / 2;
}

int st = 1, dr = cn, k = 0;
cn = cn / 2;

for(int i = 0; i <= cnt - 1; ++i)
{
int nebunie = cn;
while(nebunie)
{
if(s[st] != s[dr])
{
if(k != 0)
cout << k + 1;
else
cout << k;
return 0;
}
st++;
dr--;
nebunie--;
}
k++;
cn = cn / 2;
dr = cn;
st = 1;
}
cout << k - 1;

return 0;
}

Răspunsuri la întrebare

Răspuns de boiustef
1

#include <iostream>

#include <cstring>

using namespace std;

int main()

{

   char sir[256];

   cin.getline(sir,256);

   int n=strlen(sir), m=0, ok=1, i;

   while (n%2==0 && ok)

   {

       for (i=0; i<n/2; ++i)

       {

           if (sir[i]!=sir[n-1-i]) { ok=0;  break; }

       }

       if (ok) { ++m; n/=2; }

   }

   cout <<m;

   return 0;

}



boiustef: e clasata dificila pe pbinfo,,,, si numai 5 puncte ?? :)))
boiustef: dar s-a primit un cod elegant...
boiustef: vreau sa intreb ce inseamna in codul tau aceasta instructiune
cin >> (s + 1); ?????
Dilau420: ca indexarea incepe de la 1 ,nu de la 0 cum face in mod normal un buffer
Alte întrebări interesante