Hurra

Zadanie o nazwie Hurra pochodzi z Olimpiady Informatycznej Juniorów (OIJ) rozgrywanej w roku 2019/2020. Olimpiada jest przeznaczona dla uczniów klas szkoły podstawowej, a więcej o niej można się dowiedzieć z jej strony: oij.edu.pl. Na tej stronie publikuję przykładowe rozwiązanie, które wygeneruje nam 100 punkowy wynik.

Treść zadania

Mała Bajtynka lubi liczyć, a szczególnie uwielbia liczby 7 i 11. Mimo najlepszych starań nauczycieli, Bajtynka uroczyście
celebruje, zarówno w mowie, jak i na piśmie, każdą napotkaną liczbę podzielną przez 7, zamiast jej nazwy wykrzykując
(albo pisząc) Hurra!. Liczenie Bajtynki może więc wyglądać tak:

. . . , 5, 6, Hurra!, 8, 9, . . .

albo tak:

. . . , 12, 13, Hurra!, 15, 16, . . .

Podobnie każda liczba podzielna przez 11 zastępowana jest okrzykiem Super! (na przykład: . . . , 31, 32, Super!, 34, . . . ). Jeśli zaś Bajtynka napotka liczbę, która jest podzielna zarówno przez 7, jak i 11, zamiast niej woła Wiwat! – jest to nieco archaiczne, ale historia jest, zaraz po informatyce, ulubionym przedmiotem Bajtynki. Spraw Bajtynce prezent na urodziny – napisz program, który w jej imieniu doliczy do dużych liczb!

Przykładowe wejścia i wyjścia

  • Dla liczby 12
1
2
3
4
5
6
7
8
9
10
11
12
1
2
3
4
5
6
Hurra!
8
9
10
Super!
12

Pełna treść zadania znajduje się tutaj.

Kod programu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
n = 80
liczby = []
for x in range(1, n+1):
    if not (x % 7 == 0 or x % 11 == 0):
        liczby.append(str(x))
    else:
        if x % 7 == 0:
            p += 1
            if x % 11 == 0:
                liczby.append("Wiwat!")
                p += 1
            else:
                liczby.append("Hurra!")
        else:
            liczby.append("Super!")

print("\n".join(liczby))

Pisząc skrypt, warto zastanowić się w jakiej kolejności ułożyć instrukcje warunkowe tak, by program miał jak najmniej rzeczy do sprawdzania.