Δίνεται μία ακολουθία αποτελούμενη από Ν θετικούς ακέραιους αριθμούς. Ζητείται να βρεθεί ο μέγιστος αριθμός της ακολουθίας, ο οποίος διαιρείται ακριβώς από όλους τους αριθμούς που προηγούνται αυτού στην ακολουθία. Προφανώς ο αριθμός που εμφανίζεται πρώτος στην ακολουθία διαιρείται ακριβώς από όλους τους προηγούμενους του (γιατί δεν έχει κανέναν προηγούμενο). Άρα, αν η ακολουθία δεν είναι κενή, υπάρχει πάντα λύση στο πρόβλημα.
23ος Π.Δ.Π (2011) Γ’ Φάση (Θέμα 1ο)
ΛΥΣΗ
ΠΡΟΓΡΑΜΜΑ ΑΣΚ5_ΠΑΡ_Β_ΙΕΠ_prevdiv ΣΤΑΘΕΡΕΣ Ν=10 ! πλήθος εισόδου αριθμών ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Α[Ν], i, j, max ΛΟΓΙΚΕΣ: prev_div ! Διαιρείται από όλους τους προηγούμενους ΑΡΧΗ ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν ΔΙΑΒΑΣΕ Α[i] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ max <-- Α[1] ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Ν ΑΝ Α[i] > max TOTE prev_div <-- ΑΛΗΘΗΣ j <-- 1 ΟΣΟ j<i ΚΑΙ prev_div = ΑΛΗΘΗΣ ΕΠΑΝΑΛΑΒΕ ΑΝ Α[i] MOD Α[j] <> 0 ΤΟΤΕ prev_div <-- ΨΕΥΔΗΣ ΤΕΛΟΣ_ΑΝ j <-- j + 1 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΝ prev_div = ΑΛΗΘΗΣ ΤΟΤΕ max <-- Α[i] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ max ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ! Ενδεικτική Είσοδος: 6 3 7 2 6 21 14 42 63 84, Έξοδος: 42
Πρόσφατα σχόλια