Nombres anagramàtics P94903


Statement
 

pdf   zip

thehtml

En aquest problema, direm que dos o més nombres són anagramàtics entre ells si tenen el mateix nombre de dígits de cada. Per exemple, 7090, 9007 i 9700 són anagramàtics, perquè tots tres tenen dos 0s, un 7 i un 9. En aquest aspecte, podem dir que tots tres representen el mateix anagrama. Feu un programa que, donats n nombres, calculi quants anagrames diferents representen.

El vostre programa ha d’implementar i usar una funció

string compta_digits(int x);

que retorni un string de mida 10 que codifiqui el nombre de dígits de cada del nombre x donat, amb 1 ≤ x ≤ 109. Per exemple, per a 7090 ha de retornar “2000000101”.

Entrada

L’entrada consisteix en diversos casos, cadascun amb n seguida de n enters entre 1 i 109. Poseu suposar 0 ≤ n ≤ 105.

Sortida

Per a cada cas, escriviu el nombre d’anagrames diferents continguts en la seqüència donada.

Pista

Una solució quadràtica en n seria massa lenta.

Public test cases
  • Input

    5  7090 709 9007 6 9700
    0
    6  12233 12233 32312 33212 33221 12233
    

    Output

    3
    0
    1
    
  • Information
    Author
    Salvador Roura
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++