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

Α16.19 · Εαυτοί Αριθμοί

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

Στην θεωρία αριθμών, ένας φυσικός αριθμός $ λέγεται εαυτός (self) όταν δεν υπάρχει κάποιος φυσικός αριθμός $, έτσι ώστε το $ να ισούται με το άθροισμα του $ και των ψηφίων του $ (με βάση το 10 σε αυτό το θέμα). Έστω (n)$ η συνάρτηση που υπολογίζει το άθροισμα ενός φυσικού $ και των ψηφίων του. Τότε ένας αριθμός $ είναι εαυτός αν και μόνο αν \(\nexists m. F(m) = n\). Για παράδειγμα, (15) = 15 + 1 + 5 = 21$ και επομένως ο αριθμός 21 δεν είναι εαυτός. Αντίθετα, ο αριθμός 20 είναι εαυτός καθώς δεν υπάρχει φυσικός αριθμός $ έτσι ώστε (m) = 20$. Υπάρχουν μόλις 13 εαυτοί αριθμοί μικρότεροι του 100:

\[1, 3, 5, 7, 9, 20, 31, 42, 53, 64, 75, 86, 97\]

Γράψτε ένα πρόγραμμα C το οποίο βρίσκει και τυπώνει όλους τους εαυτούς αριθμούς σε ένα εύρος φυσικών αριθμών 0$ (το εύρος είναι κλειστό, δηλαδή τα άκρα συμπεριλαμβάνονται), όπου οι αριθμοί δίνονται από την γραμμή εντολών. Ακολουθεί παράδειγμα εκτέλεσης για να βρούμε όλους τους εαυτούς αριθμούς στο διάστημα 10000$:

$ ./self 9900 10000
Self numbers: 9903 9914 9925 9927 9938 9949 9960 9971 9982 9993
Found 10 total

Υπόδειξη

Γράψτε πρώτα μια συνάρτηση για το (m)$, με % 10 και / 10 σε βρόχο. Για κάθε $ του εύρους δεν χρειάζεται να δοκιμάσετε όλα τα \(: αφού (m) \ge m\) και το άθροισμα ψηφίων ενός αριθμού είναι μικρό (το πολύ 9 ανά ψηφίο), αρκεί να ελέγξετε λίγα $ ακριβώς κάτω από το $. Προσέξτε ότι τα όρια δίνονται ως συμβολοσειρές στο argv και ότι πρέπει να μετρήσετε πόσοι βρέθηκαν.

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