Se dă un număr N și N + 1 cuvinte formate din litere mici ale alfabetului englez. Să se afle numărul de cuvinte (excluzându-l pe primul) care sunt anagrame ale primului cuvânt.


Un cuvânt e anagramă a altui cuvânt dacă ele conțin aceleași litere, nu neapărat în aceeași ordine.


Date de intrare

Pe prima linie se află numărul N. Pe următoarele N + 1 linii se află cuvintele.


Date de ieșire

Programul va afișa numărul cerut.


Restricții

1 ≤ N ≤ 50

Lungimea fiecărui cuvânt este mai mică sau egală cu 100 000.

Exemple

Date de intrare Date de ieșire

4

server

revers

serve

sserver

server 2

Explicație

revers și server sunt anagramele cuvântului server.

Răspuns :

#include <iostream>

#include <cstring>

using namespace std;

int main(){

int n,i,j,ncuvprop=0;

char cuv[100001];

//Citeste n,primul cuvant

cin >> n;

cin >> cuv;

//Determina numarul de aparitii a fiecarei litera

int p[26];

for(i=0;i<26;i++)p[i]=0;

for(i=0;i<strlen(cuv);i++){

       if(cuv[i]>='a' && cuv[i]<='z')p[cuv[i]-'a']++;

}

   int x[26];//Vector frecventa

//Pentru fiecare cuvant

for(j=1;j<=n;j++){

       //Curatare vector frecventa

       for(i=0;i<26;i++)x[i]=0;

       //Citeste cuvantul

       cin >> cuv;

       //Determina numarul de aparitii litere

       for(i=0;i<strlen(cuv);i++){

           if(cuv[i]>='a' && cuv[i]<='z') x[cuv[i]-'a']++;

       }

       //Verifica daca frecventa literelor e aceasi

       bool ok=1;

       for(i=0;i<26;i++){

           if(x[i]!=p[i])ok=0;

       }

       //Incrementeaza numarul de cuvinte gasite daca e cazul

       if(ok)ncuvprop++;

}

cout << ncuvprop;

}

Vezi imaginea Andrei750238