Pętle (Część 1)
Materiały
Dla nauczyciela
Dla ucznia
Zadania
Zadanie 1. Dwójki
Dana jest liczba naturalna \(x\) (\(x<10^{18}\)). Dla każdego \(x\) wypisz liczbę potęg \(2\) mniejszych bądź równych każdego z \(x\).
Przykład
Wejście | Wyjście |
---|---|
10 | 4 |
64 | 7 |
Wskazówka
Zastosuj pętlę while
do obliczenia kolejnych potęg dwójki.
Zadanie 2. Litery w liczbie
Janek bada właściwości liczb i ostatnio szuka takich liczb, które zapisane w postaci szesnastkowej zawierają co najmniej jedną literę.
Wejście
Pierwszy wiersz danych zawiera liczbę naturalną mniejszej od tryliona.
Wyjście
Wypisz komunikat TAK, jeśli w postaci szesnastkowej występują litery lub NIE – jeśli ich brak.
Przykład
Wejście | Wyjście |
---|---|
54 | NIE |
255 | TAK |
Wskazówka
Aby zamienić liczbę z systemu dziesiętnego na liczbę w systemie o dowolnej innej podstawie wystarczy dzielić przez nową podstawę.
W tym przypadku jest to 16
.
Wskazówka
Podczas zamiany zamiast wypisywać kolejne reszty, sprawdź, czy dana reszta jest literą w zapisie szesnastkowym.
Zadanie 3. Małpy na wybiegu
Mały Bitek trenuje małpki. Umie już je ustawić w jednym rzędzie. Planuje teraz kolejne sztuczki. Na noc jednak Bitek musi schować małpki na wybiegu. Pomóż mu!
Wejście
W pierwszym i jedynym wierszu wejścia znajduje się jedna liczba całkowita \(n\) (\(1 \leq n \leq 1000\)) – liczba małpek.
Wyjście
Wypisz \(n\) znaków @ obok siebie otoczonych płotkiem ze znaków #.
Przykład
Wejście | Wyjście |
---|---|
5 | ####### #@@@@@# ####### |
Wskazówka
Użyj trzykrotnie pętli for
, oddzielnie dla każdego rzędu.
Zadanie 4. Szachownica
Napisz program, który dla podanej na standardowym wejściu liczby całkowitej \(n\), narysuje szachownicę z cyfr \(0\) i \(1\) o boku \(n\).
Wejście
Jedyny wiersz danych zawiera liczbę całkowitą \(n\) (\(1 \leq n \leq 200\)).
Wyjście
Program powinien wypisać szachownicę o wielkości \(n\).
Przykład
Wejście | Wyjście |
---|---|
5 | 01010 10101 01010 10101 01010 |
Wskazówka
Spróbuj napisać pętlę wypisującą pierwsze 4
rzędy szachownicy. Czy widzisz powtarzany fragment?
Wskazówka
W tym zadaniu musisz zastosować zagnieżdżonej pętli for
. Przykład takiej pętli:
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
cout << j << " ";
}
}
Zadanie 5. Najbliższy palindrom
Mały Bitek przeczytał na Wikipedii: Palindrom (gr. palindromeo – biec z powrotem) – wyrażenie brzmiące tak samo czytane od lewej do prawej i od prawej do lewej. Janek szybko ułożył sobie jeden palindrom (biorąc pod uwagę tylko litery): „U Izydy żądze na wyrku co noc ukrywane, zdąży Dyziu?”. Potem zaczął wymyślać całą masę następnych. Niestety – dużo gorzej mu idzie z liczbami. Chciałby szybko zamienić dowolna liczbę (jeśli nie jest ona palindromem) na najbliższy większy od niej palindrom. Czy mu pomożesz?
Wejście
Pierwszy wiersz danych zawiera liczbę całkowitą \(k\) (\(10 \leq k \leq 10^6\)) do zamiany na palindrom.
Wyjście
Program powinien wypisać w jedną liczbę całkowitą – najmniejszą możliwą liczbę nieujemną, którą należy dodać do danej liczby, aby otrzymać palindrom.
Przykład
Wejście | Wyjście |
---|---|
150 | 1 |
55555 | 0 |
142 | 9 |
Wskazówka
Zastanów się, jak odwrócić liczbę całkowitą. Zastosuj modulowanie przez 10
i dzielenie całkowite w pętli while
.