Задачи - УПП, Седмица 10, 15.12.2023
GitHub classroom: classroom.github.com/a/EJcTQRz4
Във всички задачи трябва да използвате рекурсия!
Задача 1
Най-големия общ делител на числата a и b е най-голямото, число което ги дели без остатък.
Евклидовият алгоритъм се базира на факта, че за две положителни числа a и b, като a > b, НОД на a и b е същия като НОД на a - b и b и когато a = b, тогава НОД на a и b е тяхната стойност.
От входа получавате две цели положителни числа и трябва да изкарате техния НОД, чрез алгоритъма на Евклид имплементиран с рекурсия.
Примери:
| Вход | Изход |
|---|---|
| 6 6 | 6 |
| 48 18 | 6 |
Задача 2
От входа получавате неотрицателно число N, което ще бъде някое число на Фибоначи.
Трябва да върнете кое по ред е, като 0 е нулевото, 1 е първото, 2 е третото, 3 е четвъртото и так. нат.
Напомням, че математически фибоначи се дефинира така:
Примери:
| Вход | Изход |
|---|---|
| 0 | 0 |
| 1 | 1 |
| 3 | 4 |
| 144 | 12 |
| 1597 | 17 |
| 46368 | 24 |
Задача 3
От входа получавате положително число N, трябва да изкарате на екрана "рисунка", показваща формата на пясъчен часовник с височина 2N (вижте примерите).
Примери:
| Вход | Изход |
|---|---|
| 1 | + # |
| 2 | +++ + # ### |
| 3 | +++++ +++ + # ### ##### |
| 5 | +++++++++
+++++++
+++++
+++
+
#
###
#####
#######
######### |
Задача 4
От входа получавате число N, след това тябва да изкарате на нови редове, в нарастващ ред, всички двоични числа, които могат да се представят с N-бита.
Вкарвате и водещи нули, тоест всяко число е съставено от точно N букви (N нули и единици).
Примери:
| Вход | Изход |
|---|---|
| 1 | 0 1 |
| 2 | 00 01 10 11 |
| 3 | 000 001 010 011 100 101 110 111 |
| 4 | 0000 0001 ... 0111 1000 1001 ... 1101 1110 1111 |
Задача 5
Получавате един ред от терминала, в който ще имате скоби, знакът + и *, шпации и числа.
Това е прост математически израз, трябва да изкарате резултата след неговото пресмятане, като винаги около число + число и число * число има скоби (тоест не е нужно да се притеснявате от приоритет и асоциативност).
За удобство спокойно може да ползвате atoi за конверитране на числовите части от низа в числа.
Примери:
| Вход | Изход |
|---|---|
| (1 + 2) | 3 |
| ((2 + 9) * 3) | 33 |
| (((8 * 1) * (56 + 4)) + (19 * 2)) | 518 |