CCC-06 (2006) - S4 (Groups)

View as PDF

Submit solution

Points: 50 (partial)
Time limit: 1.0s
Memory limit: 256M

Author:
Problem type
Allowed languages
C, C++, Java, Pascal, Python
Groups

Στα μαθηματικά, ομάδα, G, καλείται ένα αντικείμενο που αποτελείται από ένα σύνολο στοιχείων και έναν τελεστή (τον οποίο θα ονομάσουμε \times), έτσι ώστε αν τα x και y ανήκουν στο G,τότε ανήκει και το x \times y. Οι πράξεις έχουν επίσης τις ακόλουθες ιδιότητες:

  • Προσεταιριστική: Για όλα τα x, y, και z που ανήκουν στο G, ισχύει ότι x \times (y \times z) = (x \times y) \times z.
  • Ουδέτερο ή Ταυτοτικό στοιχείο: η ομάδα περιέχει ένα "ταυτοτικό στοιχείο" (θα χρησιμοποιήσουμε το i), έτσι ώστε για κάθε x που ανήκει στο G, ισχύει ότι x \times i = x και i \times x = x.
  • Ύπαρξη Αντιστρόφων: για κάθε στοιχείο x υπάρχει ένα αντίστροφο στοιχείο (το συμβολίζουμε με x^{-1}), έτσι ώστε x\times x^{-1} = i και x^{-1}\times x = i.

Οι ομάδες έχουν ένα ευρύ φάσμα εφαρμογών, όπως η μοντελοποίηση των κβαντικών καταστάσεων ενός ατόμου και οι κινήσεις για την επίλυση ενός παζλ του κύβου του Ρούμπικ. Είναι σαφές ότι οι ακέραιοι αριθμοί υπό την πράξη της πρόσθεσης σχηματίζουν μια ομάδα (το 0 είναι το ταυτοτικό στοιχείο και το αντίστροφο του x είναι το -x , και η προσεταιριστικότητα αφήνεται να αποδειχτεί ως άσκηση), αν και αυτή η ομάδα είναι άπειρη ενώ σε αυτό το πρόβλημα θα ασχοληθούμε μόνο με πεπερασμένες ομάδες. Ένα απλό παράδειγμα πεπερασμένης ομάδας είναι οι ακέραιοι modulo 10 υπό την πράξη της πρόσθεσης. Δηλαδή, η ομάδα αποτελείται από τους ακέραιους αριθμούς 0, 1, ..., 9 και η πράξη είναι: προσθέτουμε δύο αριθμούς κρατώντας μόνο το λιγότερο σημαντικό ψηφίο. Εδώ το ταυτοτικό στοιχείο είναι το 0. Η συγκεκριμένη ομάδα έχει την ιδιότητα ότι x \times y = y \times x, αλλά δεν ισχύει πάντα. Ας θεωρήσουμε την ομάδα που αποτελείται από τα στοιχεία a, b, c, d, e, και το i. Ο παρακάτω "πίνακας πολλαπλασιασμού" ορίζει τις πράξεις. Σημειώστε ότι κάθε μια από τις απαιτούμενες ιδιότητες ικανοποιούνται (προσεταιριστικότητα, ύπαρξη ταυτοτικού στοιχείου και ύπαρξη αντιστρόφου), αλλά, για παράδειγμα, c \times d = a ενώ d \times c = b.

  i a b c d e
i i a b c d e
a a i d e b c
b b e i d c a
c c d e i a b
d d c a b e i
e e b c a i d

Ο στόχος σας είναι να γράψετε ένα πρόγραμμα το οποίο θα διαβάζει μια ακολουθία πινάκων πολλαπλασιασμού και θα προσδιορίζει αν κάθε δομή που ορίζεται είναι ομάδα.

Είσοδος

Η είσοδος θα αποτελείται από έναν αριθμό τεστ δοκιμής. Κάθε τεστ δοκιμής αρχίζει με έναν ακέραιο αριθμό n (0 \le n \le 100). Εάν το τεστ δοκιμής αρχίζει με n=0, το πρόγραμμα τερματίζεται. Για να απλοποιήσουμε την είσοδο, θα χρησιμοποιήσουμε τους ακέραιους αριθμούς 1,...,n για να αναπαραστήσουμε n στοιχεία της δομής της υποψήφιας ομάδας- η ταυτότητα θα μπορούσε να είναι οποιοδήποτε από αυτά (δηλαδή, δεν είναι απαραίτητα το στοιχείο 1). Μετά τον αριθμό n σε κάθε τεστ δοκιμής ακολουθούν n γραμμές εισόδου, καθεμία από τις οποίες περιέχει n ακέραιους αριθμούς στο εύρος [1, \ldots, n] . Ο q-οστός ακέραιος στην p-οστή γραμμή αυτής της ακολουθίας είναι η τιμή p \times q.

Έξοδος

Αν το αντικείμενο είναι ομάδα, εξάγετε yes (σε ξεχωριστή γραμμή), αλλιώς τυπώστε no (σε ξεχωριστή γραμμή). Δεν θα πρέπει να τυπώνετε τίποτα για την περίπτωση όπου n=0.

Παράδειγμα

input

2
1 2
2 1
6
1 2 3 4 5 6
2 1 5 6 3 4
3 6 1 5 4 2
4 5 6 1 2 3
5 4 2 3 6 1
6 3 4 2 1 5
7
1 2 3 4 5 6 7
2 1 1 1 1 1 1
3 1 1 1 1 1 1
4 1 1 1 1 1 1
5 1 1 1 1 1 1
6 1 1 1 1 1 1
7 1 1 1 1 1 1
3
1 2 3
3 1 2
3 1 2
0

output

yes
yes
no
no
Επεξήγηση του παραδείγματος:

Οι δύο πρώτες συλλογές στοιχείων είναι στην πραγματικότητα ομάδες (δηλαδή όλες οι ιδιότητες ικανοποιούνται). Για την τρίτη υποψήφια, δεν είναι ομάδα, δεδομένου ότι 3 \times (2 \times 2) = 3 \times 1 = 3 αλλά (3 \times 2) \times 2 = 1 \times 2 = 2. Στην τελευταία υποψήφια, δεν υπάρχει ταυτότητα, αφού 1 δεν είναι η ταυτότητα, αφού 2 \times 1 = 3 (όχι 2), και 2 δεν είναι η ταυτότητα, αφού 2 \times 1 = 3 (όχι 1) και 3 δεν είναι η ταυτότητα, αφού 1 \times 3 = 3 (όχι 1).


Comments

There are no comments at the moment.