Μπορείτε να βρείτε τα υπόλοιπα των διαιρέσεων του ανωτέρω αριθμού, με
το 3 και με το 9 αντίστοιχα, χωρίς να χρησιμοποιήσετε αριθμομηχανή;
(Κατ27/Πρβ. Νο.156)
7
σχόλια:
Δημήτρης Σκυριανόγλου
είπε...
Με το 3 το υπόλοιπο είναι 2 ενώ με το 9 το υπόλοιπο είναι 5.
Η απάντηση βρίσκεται χρησιμοποιώντας τον κανόνα ότι ένας αριθμός διαιρείται με το 3 ή το 9 όταν αντίστοιχα το άθροισμα των ψηφίων του διαιρείται με το 3 ή το 9. Ο αριθμός 5.555.555.555 έχει άθροισμα ψηφίων 50. Για να διαιρείται με το 3 θα έπρεπε να έχει άθροισμα 51 ή 48, δηλ να ήταν ο 5.555.555.556 ή 5.555.555.553, άρα με τον 5.555.555.555 η διαίρεση με 3 αφήνει υπόλοιπο 2. Ομοίως για το 9 οι πλησιέστερος ακέραιοι που διαιρούνται με το 9 είναι οι 5.555.555.559 και 5.555.555.550. Άρα για τον 5.555.555.555 η διαίρεση με το 9 αφήνει υπόλοιπο 5.
Γενικά ο κανόνας που ισχύει είναι: Ένας αριθμός γραμμένος στο Ν-αδικό σύστημα διαιρείται με τον αριθμό Ν-1 αν το άθροισμα των ψηφίων του αριθμού στο Ν-αδικό σύστημα διαιρούνται με το Ν-1. Έτσι στο 10-δικό σύστημα (Ν) οι αριθμοί διαιρούνται με το 9 (Ν-1) όταν το άθροισμα των ψηφίων τους διαιρείται με το 9 (Ν-1).
Η πρώτη άσκηση που μας έβαλαν στον μάθημα Εισαγωγή στον προγραμματισμό στο 1ο έτος στο πανεπιστήμιο ήταν να χρησιμοποιήσουμε αυτόν τον κανόνα ώστε να ελέγξουμε αν ένας ακέραιος αριθμός Α διαιρείται ακριβώς με έναν ακέραιο αριθμό Β χωρίς όμως να εκτελέσουμε καμία διαίρεση με τον αριθμό Β. Να ένα ενδιαφέρον πρόβλημα :-)
@Δημήτρης Σκυριανόγλου Πολύ σωστή και τεκμηριωμένη η λύση. Τη προηγούμενη ανάρτηση μου φαίνεται πως δεν θα τη λύση κανένας. Θα την αφήσω και σήμερα και αύριο θα αναρτήσω τη λύση.
@Δημήτρης Σκυριανόγλου Σχεδόν μας το μαρτύρησες. Μετατρέπουμε τον Α του δεκαδικού σε αριθμό του (Β+1)δικού συτήματος, αθροίζουμε τα ψηφία και ελέγχουμε αν βρήκαμε Β.
@alkinoos Η ιδέα φυσικά είναι σωστή, η πλήρης όμως λύση είναι λίγο πιο περίπλοκη και πιο ενδιαφέρουσα:
Μετά τη μετατροπή των ψηφίων του Α στο (Β+1)δικο σύστημα (ενδιαφέρουσα άσκηση για χρήση των τελεστών div και mod :-)) και την άθροισή τους (S) υπάρχουν τρία ενδεχόμενα:
S = B (οπότε ο Α διαιρείται από το Β) S < B (οπότε, χωρίς να χρειαστεί διαίρεση ξέρουμε ότι ο Α δε διαιρείται από το Β αφού ο Β δε διαιρεί το S) S > B (η πιο ενδιαφέρουσα περίπτωση. Τι γίνεται τότε? Πώς μπορούμε να ξέρουμε αν ο Β διαιρεί τον S και συνεπώς και τον Α?). Νομίζω ότι η απάντηση είναι εύκολη αλλά θα το αφήσω αν κάποιος αναγνώστης του ιστολογίου επιθυμεί να "παιδευτεί" λιγάκι :-))
@papaveri Δε μου είναι κατανοητό το ζητούμενο στην προηγούμενη ανάρτηση. Τι ψάχνουμε να βρούμε? Τι σημαίνει "διαφορετικά εισιτήρια"? Αν εννοούμε διαφορετικούς προορισμούς τότε, αφού ανάμεσα στον Α και το Β υπάρχουν 25 ενδιάμεσοι σταθμοί, κάποιος από το σταθμό Α με κατεύθυνση το σταθμό Β μπορεί να ζητήσει 26 διαφορετικά εισιτήρια ένα για κάθε ενδιάμεσο σταθμό (σύνολο 25) και ένα για το Β.
Δε βλέπω "κίνηση" στο υπο-πρόβλημα που έθεσα οπότε το "παίρνει το ποτάμι"
Αν το άθροισμα των ψηφίων του Α στο (Β+1)δικό σύστημα είναι μεγαλύτερο από Β, τότε για να εξεταστεί αν το άθροισμα αυτό διαιρείται ακριβώς με το Β χωρίς όμως να γίνει η διαίρεση, τότε απλά ακολουθείται η ίδια διαδικασία για το άθροισμα! (δηλ. μετατρέπεται κι αυτό σε αριθμό του (Β+1)δικού συστήματος και αθροίζονται τα ψηφία του. Η διαδικασία αυτή συνεχίζεται μέχρις ότου το άθροισμα των ψηφίων να είναι μικρότερο ή ίσο με το Β (αν είναι μικρότερο σημαίνει ότι το τελευταίο άθροισμα και, συνεπώς, κι όλα τα προηγούμενα αλλά και ο αρχικός αριθμός Α δε διαιρούνται με το Β, ενώ αν είναι ίσιο με Β τότε το τελευταίο άθροισμα και συνεπώς όλα τα προηγούμενα αλλά και ο Α διαιρούνται με το Β.
Το δίνω με τη μορφή αλγορίθμου: (θεωρώ Α, Β φυσικούς, αν πρόκειται για ακεραίους τότε απλά ο αλγόριθμος θα χρησιμοποιήσει τις απόλυτες τιμές τους)
Διαίρεση Α, Β φυσικοί
Αρχή
Διάβασε Α Διάβασε Β S <- A
Όσο S > B επανάλαβε S <- Άθροισμα του S στο (Β+1)δικό σύστημα Τέλος_Επανάληψης
Αν S = B τότε Τύπωσε "Ο Β διαιρεί τον Α" Αλλιώς Τύπωσε "Ο Β δε διαιρεί τον Α" Τέλος_Αν
Τέλος
Κάποιο ενδιαφέρον παρουσιάζει η μετατροπή ενός αριθμού στο (Β+1)δικό σύστημα και η άθροιση των ψηφίων του. Αυτό γίνεται με χρήση των τελεστών div και mod που υπολογίζουν αντίστοιχα το ακέραιο πηλίκο και υπόλοιπο της διαίρεσης δύο ακεραίων αριθμών.
Ο αλγόριθμος έχει ως εξής:
Μετατροπή Α, Ν !Υπολογίζει το άθροισμα των ψηφίων του Α στο Ν-δικό σύστημα S ακέραιος
Αρχή
S <- 0
Επανάλαβε S <- S + A mod N A <- A div N Μέχρις_ότου Α=0
Τύπωσε "Το άθροισμα των ψηφίων είναι", S
Τέλος
Σε κάθε βήμα της επανάληψης υπολογίζεται το πιο δεξί ψηφίο του αριθμού (με τον τελεστή mod) ενώ με τον τελεστή div "αποκόβεται" κατόπιν το πιο δεξί ψηφίο του Α και προχωράει η διαδικασία στο επόμενη στην τάξη ψηφίο. Ελπίζω να ήμουν κατανοητός :-)
Δε βλέπω "κίνηση" στο υπο-πρόβλημα που έθεσα οπότε το "παίρνει το ποτάμι"
Αν το άθροισμα των ψηφίων του Α στο (Β+1)δικό σύστημα είναι μεγαλύτερο από Β, τότε για να εξεταστεί αν το άθροισμα αυτό διαιρείται ακριβώς με το Β χωρίς όμως να γίνει η διαίρεση, τότε απλά ακολουθείται η ίδια διαδικασία για το άθροισμα! (δηλ. μετατρέπεται κι αυτό σε αριθμό του (Β+1)δικού συστήματος και αθροίζονται τα ψηφία του. Η διαδικασία αυτή συνεχίζεται μέχρις ότου το άθροισμα των ψηφίων να είναι μικρότερο ή ίσο με το Β (αν είναι μικρότερο σημαίνει ότι το τελευταίο άθροισμα και, συνεπώς, κι όλα τα προηγούμενα αλλά και ο αρχικός αριθμός Α δε διαιρούνται με το Β, ενώ αν είναι ίσιο με Β τότε το τελευταίο άθροισμα και συνεπώς όλα τα προηγούμενα αλλά και ο Α διαιρούνται με το Β.
Το δίνω με τη μορφή αλγορίθμου: (θεωρώ Α, Β φυσικούς, αν πρόκειται για ακεραίους τότε απλά ο αλγόριθμος θα χρησιμοποιήσει τις απόλυτες τιμές τους)
Διαίρεση Α, Β φυσικοί
Αρχή
Διάβασε Α Διάβασε Β S <- A
Όσο S > B επανάλαβε S <- Άθροισμα του S στο (Β+1)δικό σύστημα Τέλος_Επανάληψης
Αν S = B τότε Τύπωσε "Ο Β διαιρεί τον Α" Αλλιώς Τύπωσε "Ο Β δε διαιρεί τον Α" Τέλος_Αν
7 σχόλια:
Με το 3 το υπόλοιπο είναι 2 ενώ με το 9 το υπόλοιπο είναι 5.
Η απάντηση βρίσκεται χρησιμοποιώντας τον κανόνα ότι ένας αριθμός διαιρείται με το 3 ή το 9 όταν αντίστοιχα το άθροισμα των ψηφίων του διαιρείται με το 3 ή το 9.
Ο αριθμός 5.555.555.555 έχει άθροισμα ψηφίων 50. Για να διαιρείται με το 3 θα έπρεπε να έχει άθροισμα 51 ή 48, δηλ να ήταν ο
5.555.555.556 ή 5.555.555.553, άρα με τον 5.555.555.555 η διαίρεση με 3 αφήνει υπόλοιπο 2.
Ομοίως για το 9 οι πλησιέστερος ακέραιοι που διαιρούνται με το 9 είναι οι 5.555.555.559 και 5.555.555.550. Άρα για τον 5.555.555.555 η διαίρεση με το 9 αφήνει υπόλοιπο 5.
Γενικά ο κανόνας που ισχύει είναι: Ένας αριθμός γραμμένος στο Ν-αδικό σύστημα διαιρείται με τον αριθμό Ν-1 αν το άθροισμα των ψηφίων του αριθμού στο Ν-αδικό σύστημα διαιρούνται με το Ν-1. Έτσι στο 10-δικό σύστημα (Ν) οι αριθμοί διαιρούνται με το 9 (Ν-1) όταν το άθροισμα των ψηφίων τους διαιρείται με το 9 (Ν-1).
Η πρώτη άσκηση που μας έβαλαν στον μάθημα Εισαγωγή στον προγραμματισμό στο 1ο έτος στο πανεπιστήμιο ήταν να χρησιμοποιήσουμε αυτόν τον κανόνα ώστε να ελέγξουμε αν ένας ακέραιος αριθμός Α διαιρείται ακριβώς με έναν ακέραιο αριθμό Β χωρίς όμως να εκτελέσουμε καμία διαίρεση με τον αριθμό Β. Να ένα ενδιαφέρον πρόβλημα :-)
@Δημήτρης Σκυριανόγλου
Πολύ σωστή και τεκμηριωμένη η λύση.
Τη προηγούμενη ανάρτηση μου φαίνεται πως δεν θα τη λύση κανένας. Θα την αφήσω και σήμερα και αύριο θα αναρτήσω τη λύση.
@Δημήτρης Σκυριανόγλου
Σχεδόν μας το μαρτύρησες. Μετατρέπουμε τον Α του δεκαδικού σε αριθμό του (Β+1)δικού συτήματος, αθροίζουμε τα ψηφία και ελέγχουμε αν βρήκαμε Β.
@alkinoos
Η ιδέα φυσικά είναι σωστή, η πλήρης όμως λύση είναι λίγο πιο περίπλοκη και πιο ενδιαφέρουσα:
Μετά τη μετατροπή των ψηφίων του Α στο (Β+1)δικο σύστημα (ενδιαφέρουσα άσκηση για χρήση των τελεστών div και mod :-)) και την άθροισή τους (S) υπάρχουν τρία ενδεχόμενα:
S = B (οπότε ο Α διαιρείται από το Β)
S < B (οπότε, χωρίς να χρειαστεί διαίρεση ξέρουμε ότι ο Α δε διαιρείται από το Β αφού ο Β δε διαιρεί το S)
S > B (η πιο ενδιαφέρουσα περίπτωση. Τι γίνεται τότε? Πώς μπορούμε να ξέρουμε αν ο Β διαιρεί τον S και συνεπώς και τον Α?). Νομίζω ότι η απάντηση είναι εύκολη αλλά θα το αφήσω αν κάποιος αναγνώστης του ιστολογίου επιθυμεί να "παιδευτεί" λιγάκι :-))
@papaveri
Δε μου είναι κατανοητό το ζητούμενο στην προηγούμενη ανάρτηση. Τι ψάχνουμε να βρούμε? Τι σημαίνει "διαφορετικά εισιτήρια"? Αν εννοούμε διαφορετικούς προορισμούς τότε, αφού ανάμεσα στον Α και το Β υπάρχουν 25 ενδιάμεσοι σταθμοί, κάποιος από το σταθμό Α με κατεύθυνση το σταθμό Β μπορεί να ζητήσει 26 διαφορετικά εισιτήρια ένα για κάθε ενδιάμεσο σταθμό (σύνολο 25) και ένα για το Β.
@Δημήτρης Σκυριανόγλου
Για τη σχετική απορία βλέπε αναρτημένη λύση.
Δε βλέπω "κίνηση" στο υπο-πρόβλημα που έθεσα οπότε το "παίρνει το ποτάμι"
Αν το άθροισμα των ψηφίων του Α στο (Β+1)δικό σύστημα είναι μεγαλύτερο από Β, τότε για να εξεταστεί αν το άθροισμα αυτό διαιρείται ακριβώς με το Β χωρίς όμως να γίνει η διαίρεση, τότε απλά ακολουθείται η ίδια διαδικασία για το άθροισμα! (δηλ. μετατρέπεται κι αυτό σε αριθμό του (Β+1)δικού συστήματος και αθροίζονται τα ψηφία του. Η διαδικασία αυτή συνεχίζεται μέχρις ότου το άθροισμα των ψηφίων να είναι μικρότερο ή ίσο με το Β (αν είναι μικρότερο σημαίνει ότι το τελευταίο άθροισμα και, συνεπώς, κι όλα τα προηγούμενα αλλά και ο αρχικός αριθμός Α δε διαιρούνται με το Β, ενώ αν είναι ίσιο με Β τότε το τελευταίο άθροισμα και συνεπώς όλα τα προηγούμενα αλλά και ο Α διαιρούνται με το Β.
Το δίνω με τη μορφή αλγορίθμου:
(θεωρώ Α, Β φυσικούς, αν πρόκειται για ακεραίους τότε απλά ο αλγόριθμος θα χρησιμοποιήσει τις απόλυτες τιμές τους)
Διαίρεση
Α, Β φυσικοί
Αρχή
Διάβασε Α
Διάβασε Β
S <- A
Όσο S > B επανάλαβε
S <- Άθροισμα του S στο (Β+1)δικό σύστημα
Τέλος_Επανάληψης
Αν S = B τότε
Τύπωσε "Ο Β διαιρεί τον Α"
Αλλιώς
Τύπωσε "Ο Β δε διαιρεί τον Α"
Τέλος_Αν
Τέλος
Κάποιο ενδιαφέρον παρουσιάζει η μετατροπή ενός αριθμού στο (Β+1)δικό σύστημα και η άθροιση των ψηφίων του. Αυτό γίνεται με χρήση των τελεστών div και mod που υπολογίζουν αντίστοιχα το ακέραιο πηλίκο και υπόλοιπο της διαίρεσης δύο ακεραίων αριθμών.
Ο αλγόριθμος έχει ως εξής:
Μετατροπή Α, Ν
!Υπολογίζει το άθροισμα των ψηφίων του Α στο Ν-δικό σύστημα
S ακέραιος
Αρχή
S <- 0
Επανάλαβε
S <- S + A mod N
A <- A div N
Μέχρις_ότου Α=0
Τύπωσε "Το άθροισμα των ψηφίων είναι", S
Τέλος
Σε κάθε βήμα της επανάληψης υπολογίζεται το πιο δεξί ψηφίο του αριθμού (με τον τελεστή mod) ενώ με τον τελεστή div "αποκόβεται" κατόπιν το πιο δεξί ψηφίο του Α και προχωράει η διαδικασία στο επόμενη στην τάξη ψηφίο. Ελπίζω να ήμουν κατανοητός :-)
Δε βλέπω "κίνηση" στο υπο-πρόβλημα που έθεσα οπότε το "παίρνει το ποτάμι"
Αν το άθροισμα των ψηφίων του Α στο (Β+1)δικό σύστημα είναι μεγαλύτερο από Β, τότε για να εξεταστεί αν το άθροισμα αυτό διαιρείται ακριβώς με το Β χωρίς όμως να γίνει η διαίρεση, τότε απλά ακολουθείται η ίδια διαδικασία για το άθροισμα! (δηλ. μετατρέπεται κι αυτό σε αριθμό του (Β+1)δικού συστήματος και αθροίζονται τα ψηφία του. Η διαδικασία αυτή συνεχίζεται μέχρις ότου το άθροισμα των ψηφίων να είναι μικρότερο ή ίσο με το Β (αν είναι μικρότερο σημαίνει ότι το τελευταίο άθροισμα και, συνεπώς, κι όλα τα προηγούμενα αλλά και ο αρχικός αριθμός Α δε διαιρούνται με το Β, ενώ αν είναι ίσιο με Β τότε το τελευταίο άθροισμα και συνεπώς όλα τα προηγούμενα αλλά και ο Α διαιρούνται με το Β.
Το δίνω με τη μορφή αλγορίθμου:
(θεωρώ Α, Β φυσικούς, αν πρόκειται για ακεραίους τότε απλά ο αλγόριθμος θα χρησιμοποιήσει τις απόλυτες τιμές τους)
Διαίρεση
Α, Β φυσικοί
Αρχή
Διάβασε Α
Διάβασε Β
S <- A
Όσο S > B επανάλαβε
S <- Άθροισμα του S στο (Β+1)δικό σύστημα
Τέλος_Επανάληψης
Αν S = B τότε
Τύπωσε "Ο Β διαιρεί τον Α"
Αλλιώς
Τύπωσε "Ο Β δε διαιρεί τον Α"
Τέλος_Αν
Τέλος
Δημοσίευση σχολίου