El petit teorema de Fermat P57075


Statement
 

Graphic problem

pdf   zip

html

Sigui C = {c0, …, ca − 1} un conjunt amb a colors diferents. Heu de dissenyar collarets amb p vidres, cadascun amb un color de C, i usant almenys dos colors. Però, tenint en compte que els collarets són cíclics, per evitar dissenys repetits heu de generar només els que siguin més petits lexicogràficament. Per exemple, (Green, Green, Blue) és cíclicament equivalent a (Green, Blue, Green), i a (Blue, Green, Green). D’aquests tres dissenys, cal generar només l’últim, perquè és el més petit en ordre lexicogràfic.

A partir d’ara, suposem que p és un nombre primer. En aquest cas, es pot demostrar que hi ha exactament apa/p dissenys diferents. Fixeu-vos que això implica que apa és múltiple del primer p. Això és precisament el que diu el petit teorema de Fermat, el qual, malgrat el nom, és un dels teoremes més importants de les matemàtiques!

Entrada

L’entrada comença amb tres enters d (senar), p (primer) i a, amb d ≥ 5, 2 ≤ p ≤ 13, i 2 ≤ a ≤ 100, seguit d’a colors diferents en ordre alfabètic, tot en línies diferents.

Sortida

Genereu una imatge de dimensions (d · p, d · apa/p ) amb fons ‘Black’, consistent en apa/p columnes. Cadascuna té un disseny amb p cercles de diàmetre d. Els dissenys han de sortir ordenats lexicogràficament d’esquerra a dreta. Cap imatge tindrà més de 106 píxels.

Public test cases
  • Input

    25
    3
    4
    Blue
    Green
    Red
    Yellow
    

    Output

    sample-1.png

     (500×75)

  • Input

    9
    2
    5
    Cyan
    Gold
    Magenta
    Pink
    Tomato
    

    Output

    sample-2.png

     (90×18)

  • Information
    Author
    Félix Moreno
    Language
    Catalan
    Official solutions
    Python
    User solutions
    Python