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ăspunsuri la întrebare
#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;
}