282
Cerința
O pereche de cuvinte, unul cu număr par de litere, iar celălalt cu număr impar de litere, se numește descentrată dacă se poate obține cuvântul cu număr par de litere din celălalt, prin duplicarea caracterului din mijlocul acestuia.
Exemplu:
Exemplu
Intrare
crezi ca poti sa creezi ceva original
Ieșire
DA
Explicație
Perechea descentrată de cuvinte este crezi
– creezi
.
#include <bits/stdc++.h> using namespace std; int nrcif(const char s[]) { int i = 0; int cnt=0; while(s[i]!='\0') cnt++ , i++; return cnt; } bool nr(int i ,const char s[]) { return ((int)s[i] >= 65 && (int)s[i] <= 90) || ((int)s[i] >= 97 && (int)s[i] <= 122); } void SplitText(const char s[], char cuv[100][30], int &n) { n = 0; int i = 0 , j=0; bool ok=false; bool fct= false; while(s[i]!='\0') { if(nr(i , s)) { if(ok) { if(fct==false) n++ , ok = false; else ok=false , fct = false; } cuv[n][j]=s[i]; j++; if(!nr(i+1 , s)) cuv[n][j]='\0'; } else { if(i == 0) fct=true; j=0; ok = true; } i++; } n++; } int main() { char s[100] , m[100][30]; int n=0; cin.getline(s , 100); SplitText(s , m, n); bool pereche=false; for(int i = 0 ; i < n ; ++i) { for(int j = 0 ; j < n ; ++j) { if(nrcif(m[j])%2==1 && nrcif(m[i])%2==0) { int poz = nrcif(m[j]) / 2; bool pd=true; int q = 0 , k = 0; while(m[i][q]!='\0') { if(q==poz) q++; if(m[i][q]!=m[j][k]) pd=false; q++ , k++; } if(pd) pereche = true; } } } if(pereche) cout << "DA"; else cout << "NU"; return 0; }
Comentarii