Στα μαθηματικά, ένας φυσικός αριθμός \(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)