Οδηγός Μελέτης - Εισαγωγή στον Προγραμματισμό

Α16.24 · Οι Καλύτεροι Αριθμοί, Παμψηφεί

Κατατακτήριες Δεκεμβρίου 2024, Θέμα 2 · Δυσκολία ★★☆ · programming · Κεφάλαια: 16, 2

Στα μαθηματικά, ένας φυσικός αριθμός \(n\) λέγεται πανψηφιακός (pandigital) ως προς μια βάση \(b\) όταν περιέχει τουλάχιστον μία φορά όλα τα ψηφία από το 0 μέχρι το \(b - 1\). Για παράδειγμα, ο αριθμός 1234567890 είναι πανψηφιακός με βάση το 10 όπως και ο αριθμός 90123456789 (τα ψηφία μπορούν να επαναλαμβάνονται και η σειρά τους δεν έχει σημασία).

Γράψτε ένα πρόγραμμα C το οποίο βρίσκει και τυπώνει όλους τους πανψηφιακούς αριθμούς με βάση το 10 σε ένα εύρος φυσικών αριθμών \([low, high]\) (το εύρος είναι κλειστό, δηλαδή τα άκρα συμπεριλαμβάνονται), όπου οι αριθμοί δίνονται από την γραμμή εντολών. Οι αριθμοί του εύρους δεν θα υπερβούν το \(2^{64} - 1\). Ακολουθεί παράδειγμα εκτέλεσης για να βρούμε όλους τους πανψηφιακούς αριθμούς στο διάστημα \([1000000000, 1300000000]\):

$ ./pandigital 1000000000 1300000000
All pandigital numbers in the range 1000000000 to 1300000000 follow:
1023456789
1023456798
1023456879
1023456897
...
1298765304
1298765340
1298765403
1298765430

Υπόδειξη

Τα όρια χωράνε μόνο σε unsigned long long, οπότε διαβάστε τα με strtoull και προσέξτε τον βρόχο όταν high είναι η μέγιστη τιμή του τύπου (ο μετρητής δεν πρέπει να υπερχειλίσει). Για κάθε αριθμό βγάλτε τα ψηφία του με % 10 και / 10 και σημειώστε ποια εμφανίστηκαν, π.χ. σε μια μάσκα 10 bit. Αριθμοί με λιγότερα από 10 ψηφία δεν μπορούν να είναι πανψηφιακοί.

Αριθμός στον οδηγό: Α16.24 (στο κεφάλαιο) · Μόνιμο αναγνωριστικό: exam-2024-dec-q2 · Σύνδεσμος: https://progintro.github.io/study/questions/exams/exam-2024-dec-q2.html · Markdown (GitHub)