Zad. 1. Na stole leży n monet, z których jedna leży do góry orzełkiem, a reszta reszką. W pojedynczym ruchu możemy odwrócić dowolne trzy monety. Czy da się uzyskać n reszek, a jeśli tak, to w ilu ruchach minimalnie, jeśli: a) n = 100, b) n = 101, c) n = 102?
Zad. 2. Zwariowany komputer wyświetla na ekranie liczbę k, którą uzyskuje, wykonując poniższy ciąg instrukcji:
a) zaczyna od k = 0;
b) dodaje do k dowolnie wiele (być może zero) razy liczbę 10;
c) albo powiększa k o 1 i kończy działanie, wyświetlając wartość k, albo dowolnie wiele razy (być może zero) dodaje do k liczbę 15;
d) powiększa k o 4 albo o 2;
e) kończy działanie, wypisując wartość k.
Ile jest liczb wśród 1, 2, ..., 2016, 2017, które mogą zostać wyświetlone?
Zad. 3. Podaj algorytm, który oblicza, którym dniem w roku zwykłym jest dzień o zadanej dacie (d - numer dnia, m - numer miesiąca).
W tym miesiącu punkty zdobyli:
- 3 pkt. - Jadwiga Bąk (nauczycielka z Karłowic), Krzysztof Danielak (student informatyki przemysłowej na PWr), Szymon Meyer (student matematyki na PWr), Andrzej Piasecki (administrator IT z Oleśnicy), Wojciech Tomiczek (inżynier z Lipowej), Marzena Wąsiewicz (gospodyni domowa z Kajetan),
- 2,5 pkt. - Jakub Ptak SP 64 Wrocław
- 2 pkt. - Daria Bumażnik (studentka chemii i toksykologii sądowej na UWr), Krystyna Lisiowska (redaktor z Warszawy).
Po dziewięciu miesiącach trwania Ligi Zadaniowej z Kalkulatorem i Komputerem wyniki czołówki są następujące (na 30 możliwych punktów):
- 29,5 pkt. - Marzena Wąsiewicz
- 28,75 pkt. - Jadwiga Bąk
- 28,5 pkt. - Andrzej Piasecki
- 26 pkt. - Szymon Meyer
- 24,75 pkt. - Krzysztof Danielak
- 23,75 pkt. - Wojciech Tomiczek
- 22,6 pkt. - Jakub Ptak
- 21,25 pkt. - Krystyna Lisiowska
- 20,75 pkt. - Daria Bumażnik.
Zad. 1. We wszystkich przypadkach minimalna liczba ruchów wynosi 3. W pierwszych dwóch ruchach odwracamy po dwie reszki i orła, a w trzecim odwracamy trzy orły i mamy n reszek.
Zad. 2. Może zostać wyświetlone 1007 liczb. Komputer wyświetla liczby postaci: 10n+1, 10n+15m+2, 10n+15m+4, gdzie n, m ≥ 0.
W każdej dziesiątce liczb (oprócz pierwszej) znajduje się 5 liczb, które
komputer może wyświetlić (np.
31 = 10·3+1,
32 = 10·3+15·0+2,
34 = 10·3+15·0+4,
37 = 10·2+15·1+2,
39 = 10·2+15·1+4).
Zatem wśród liczb od 10 do 2009 mamy 200·5=1000 liczb, które mogą być
wyświetlone. Ponadto są jeszcze 3 liczby z zakresu 1-9 (1, 2, i 4) oraz 4 z zakresu 2010-2017 (2011, 2012, 2014, 2017).
Zad. 3. Oto przykładowy algorytm. Standardowo instrukcja warunkowa działa tak, że wykonuje wszystkie linie programu, gdy jest spełniona, a opuszcza kolejną i wykonuje pozostałe, gdy nie jest spełniona.
przyjmij d
przyjmij m
wstaw d do zmiennej x
jeżeli m>1 zwiększ x o 31
jeżeli m>2 zwiększ x o 28
jeżeli m>3 zwiększ x o 31
jeżeli m>4 zwiększ x o 30
jeżeli m>5 zwiększ x o 31
jeżeli m>6 zwiększ x o 30
jeżeli m>7 zwiększ x o 31
jeżeli m>8 zwiększ x o 31
jeżeli m>9 zwiększ x o 30
jeżeli m>10 zwiększ x o 31
jeżeli m>11 zwiększ x o 30
wyświetl x
Dni kolejnych miesięcy można zapamiętać w postaci listy L = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}. Wtedy instrukcje warunkowe można zastąpić pętlą.
przyjmij d
przyjmij m
wstaw d do zmiennej x
wstaw 1 do zmiennej n
etykieta1
x+L(n) wstaw do x
wstaw n+1 do zmiennej n
jeżeli n<m przejdź do etykiety 1
wyświetl x
Można zmniejszyć liczbę warunków ([a] oznacza część całkowitą liczby a).
przyjmij d
przyjmij m
wstaw d do zmiennej x
jeżeli m<3 wstaw x+31*(m-1) do x
w przeciwnym razie
jeżeli m<9 wstaw x+59+[m-2/2]*31+[m-3/2]*30 do x
wstaw x+59+[m-1/2]*31+[m-4/2]*30 do x
wyświetl x
A można też tak:
przyjmij d
przyjmij m
wyświetl [m+10/12]*31+[m+9/12]*28+[m+8/12]*31+[m+7/12]*30+[m+6/12]*31+[m+5/12]*30+[m+4/12]*31+[m+3/12]*31+[m+2/12]*30+[m+1/12]*31+[m/12]*30+d