Πάντα νικητής;
Αυγούστου 16, 2008
Ένας χρήστης παίζει με τον υπολογιστή ως εξής:
Σε κάθε γύρο, ο χρήστης λέει έναν ακέραιο αριθμό από το 1 έως το 10 και ο υπολογιστής λέει έναν άλλο. Το παιχνίδι συνεχίζεται ώσπου όλοι οι αριθμοί που έχει πει ο χρήστης σε όλους τους γύρους να δίνουν άθροισμα με όλους τους αριθμούς που έχει πει ο υπολογιστής σε όλους τους γύρους τον αριθμό 101. Ο χρήστης και ο υπολογιστής παίζουν εναλλάξ σε κάθε γύρο. Το πλήθος των γύρων μπορεί να διαφέρει από παιχνίδι σε παιχνίδι, ανάλογα με τους αριθμούς που επιλέγει ο καθένας.
Αν για παράδειγμα στο τέλος κάποιου γύρου το άθροισμα των αριθμών που έχουν πει οι δύο παίκτες είναι 98 και ο παίκτης που παίζει πει τον αριθμό 2, ο επόμενος παίκτης είναι αναγκασμένος να επιλέξει τον αριθμό 1, ώστε το συνολικό άθροισμα να μην ξεπεράσει το 101, αν ο παίκτης πει 3 το παιχνίδι σταματά, αν πει 4 είναι άκυρη επιλογή και πρέπει να ξαναεπιλέξει αριθμό.
Πώς επιλέγεται ο νικητής:
Όταν και οι 2 παίκτες (υπολογιστής και χρήστης) έχουν πει όλους τους αριθμούς και το άθροισμα έχει φτάσει 101, υπολογίζεται το άθροισμα των αριθμών που είπε ο χρήστης (έστω sumA) και το άθροισμα των αριθμών που είπε ο υπολογιστής (έστω sumB) σε κάθε γύρο. Αν οι αριθμοί sumA και sumB είναι πρώτοι μεταξύ τους, τότε κερδίζει ο υπολογιστής. Αν όχι, κερδίζει ο χρήστης.
Η ερώτηση είναι:
Με ποιο τρόπο (αλγόριθμο) μπορεί να παιχτεί το παιχνίδι από τον υπολογιστή ώστε ο χρήστης να μην έχει καμιά ελπίδα να κερδίσει;
Σημείωση:
Δυο αριθμοί λέγονται πρώτοι μεταξύ τους όταν δεν έχουν κανένα κοινό διαιρέτη εκτός από τη μονάδα.
Λύση… (Μην κλέβετε!)
Διαβάστε την υπόλοιπη καταχώριση »
Κι άλλη μνήμη… :-P
Αυγούστου 16, 2008
Έχουμε μια ενιαία περιοχή μνήμης διαστάσεων 5×1000 (φανταστείτε ότι μοιάζει πίνακα με 5 γραμμές και 1000 στήλες) στην οποία μπορούμε να γράφουμε και να διαβάζουμε bits ένα-ένα.
Έχουμε 5 διεργασίες που κάνουν το εξής:
-
Η 1η διεργασία γράφει το bit 1 σε κάθε θέση μνήμης στην 1η γραμμή (γραμμή 0 στο σχήμα).
-
Η 2η διεργασία γράφει την ακολουθία 10000 (άσσος που ακολουθείται από 4 μηδενικά) στη 2η γραμμή συνεχόμενα ώσπου να γεμίσουν οι θέσεις μνήμης της 2ης γραμμής (γραμμή 1 στο σχήμα).
-
Η 3η διεργασία γράφει την ακολουθία 1000000 (άσσος ακολουθούμενος από 6 μηδενικά) στην 3η γραμμή στη σειρά ώσπου να γεμίσουν οι θέσεις μνήμης της 3ης γραμμής (γραμμή 2 στο σχήμα).
-
Η 4η διεργασία γράφει την ακολουθία 10000000000000000 (άσσος που ακολουθείται από 16 μηδενικά στην 4η γραμμή ώσπου να γεμίσουν οι θέσεις μνήμης της 4ης γραμμής (γραμμή 3 στο σχήμα).
-
Η 5η διεργασία γράφει την ακολουθία 1000000000000000000000 (άσσος που ακολουθείται από 22 μηδενικά στην 5η γραμμή ώσπου να γεμίσουν οι θέσεις μνήμης της 5ης γραμμής (γραμμή 4 στο σχήμα).
Ποιο είναι το συντομότερο πρόγραμμα που τυπώνει τους αριθμούς των στηλών του “πίνακα – μνήμης” που αποτελούνται μόνο από άσσους;
Παράδειγμα:
Στη μνήμη του επόμενου σχήματος η στήλη 0 είναι μια από τις ζητούμενες.
Λύση… (Μην κλέβετε!)
Η άπειρη μνήμη
Αυγούστου 16, 2008
Έστω ότι έχουμε δύο θετικούς ακέραιους αριθμούς τους a και b που είναι αρκετά μικροί σε σχέση με το χώρο που καταλαμβάνει ένας ακέραιος στη μνήμη του υπολογιστή και έναν πάρα πολύ μεγάλο ακέραιο αριθμό n (θεωρητικά άπειρο) που η ακριβής τιμή του δεν έχει μεγάλη σημασία. Ισχύουν, δηλαδή, τα εξής:
-
και
-
και
Αν στην επόμενη παράσταση οι ρίζες είναι n σε πλήθος, υπάρχει τρόπος να φτιαχτεί πρόγραμμα που να την υπολογίζει, χωρίς να προκαλεί υπερχείλιση και να εκτελείται σε πεπερασμένο χρόνο; Ναι ή όχι και γιατί;
Λύση… (Μην κλέβετε!)
Quiz
Ιουλίου 6, 2007
Όποτε διαβάζω τα posts μου απελπίζομαι… Πρέπει να γράψω και κάτι με ουσία!!
Αποφάσισα να κάνω post τα quiz που έβαλα στο #c/c++!!
Μπορεί εκεί να μην είχαν και μεγάλη απείχηση,
αλλά εδώ αν κάποτε κάποιος που δεν έχει τι να κάνει…
μπορεί και να καθίσει να τα λύσει…
Βήμα 1ο:.. έφτιαξα την κατηγορία Quiz που θα τα φιλοξενήσει!!
Βήμα 2ο:.. πάω για ύπνο!! zzzZZZZzzzzzz!!!!!
Από αύριο θα αρχίσει το ανέβασμα των Quiz!!
Καληνύχτα!!
