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
20
de litere;
Exemplu
Intrare
ababa
Ieșire
10
Explicație
Cele 10
cuvinte sunt: aaabb
, aabab
, aabba
, abaab
, ababa
, abbaa
, baaab
, baaba
, babaa
, bbaaa
.
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema NumarareAnagrame:
#include <iostream>
#include <cstring>
#include <cassert>
using namespace std;
int F[26];
long long Fact(int n)
{
long long R = 1;
for(int i = 1 ; i <= n ; i ++)
R *= i;
return R;
}
int main()
{
char s[201];
cin >> s;
assert(strlen(s) <= 20);
for(int i = 0 ; s[i] ; i ++)
F[s[i]-'a'] ++;
int S = 0;
for(int i = 0 ; i < 26 ; i ++)
S += F[i];
long long R = Fact(S);
for(int i = 0 ; i < 26 ; i ++)
R /= Fact(F[i]);
cout << R;
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #3329 NumarareAnagrame
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #3329 NumarareAnagrame de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!