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

Α16.23 · Τυχεροί Αριθμοί

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

Πρόγραμμα: lucky.c

Γράψτε ένα πρόγραμμα που να ελέγχει για κάθε ένα ακέραιο όρισμα που του δίνεται εάν ο αριθμός αυτός είναι “τυχερός” (lucky). Ένας ακέραιος λέγεται τυχερός, εάν μπορεί να εκφραστεί ως το άθροισμα των κύβων δύο θετικών ακεραίων. Για παράδειγμα, ο αριθμός 28 είναι τυχερός (3^3 + 1^3) ενώ ο αριθμός 27 δεν είναι. Παράδειγμα εκτέλεσης ακολουθεί:

$ gcc -o lucky lucky.c -lm
$ ./lucky 28 95 128 298374 508167898112
28 is lucky: 1^3 + 3^3 = 28
No positive i, j exist such that i^3+j^3 = 95
128 is lucky: 4^3 + 4^3 = 128
No positive i, j exist such that i^3+j^3 = 298374
508167898112 is lucky: 2344^3 + 7912^3 = 508167898112

Υπόδειξη

Για κάθε i με i³ ≤ n/2 αρκεί να ελέγξετε αν το n − i³ είναι τέλειος κύβος. Αν χρησιμοποιήσετε cbrt, στρογγυλέψτε και επαληθεύστε με ακέραια αριθμητική, γιατί η κινητή υποδιαστολή κάνει λάθη στρογγύλευσης. Το τελευταίο παράδειγμα χρειάζεται long long.

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