326
Cerința
Se dă un cuvânt format numai din litere mici ale alfabetului englez. Determinați câte cuvinte distincte se pot forma cu literele sale – numărul de anagrame ale sale.
Date de intrare
Programul citește de la tastatură un cuvânt.
Date de ieșire
Programul va afișa pe ecran numărul C, reprezentând numărul cerut.
Restricții și precizări
- cuvântul dat va avea cel mult
20de litere;
Exemplu
Intrare
ababa
Ieșire
10
Explicație
Cele 10 cuvinte sunt: aaabb, aabab, aabba, abaab, ababa, abbaa, baaab, baaba, babaa, bbaaa.
#include <bits/stdc++.h>
using namespace std;
char s[21];
int f[200];
long long int fact = 1;
long long int facto(int i){
long long int fct = 1;
if(i == 0)
return 1;
else
for(int j = 1; j <= i; ++j)
fct *= j;
return fct;
}
int main(){
cin >> s;
for(int i = 1; i <= strlen(s); ++i)
fact *= i;
int i = 0;
while(s[i]){
f[s[i]] ++;
i++;
}
for(int i = 'a'; i <= 'z'; ++i)
fact /= facto(f[i]);
cout << fact;
return 0;
}
Comentarii