Задачи - УПП, Седмица 10, 15.12.2023


GitHub classroom: classroom.github.com/a/EJcTQRz4

important Във всички задачи трябва да използвате рекурсия!

Задача 1

Най-големия общ делител на числата a и b е най-голямото, число което ги дели без остатък. Евклидовият алгоритъм се базира на факта, че за две положителни числа a и b, като a > b, НОД на a и b е същия като НОД на a - b и b и когато a = b, тогава НОД на a и b е тяхната стойност.

От входа получавате две цели положителни числа и трябва да изкарате техния НОД, чрез алгоритъма на Евклид имплементиран с рекурсия.

Примери:

ВходИзход
6 6 6
48 186

Задача 2

От входа получавате неотрицателно число N, което ще бъде някое число на Фибоначи. Трябва да върнете кое по ред е, като 0 е нулевото, 1 е първото, 2 е третото, 3 е четвъртото и так. нат. Напомням, че математически фибоначи се дефинира така:

F(0) = 0; F(1) = 1; F(n) = F(n-1) + F(n-2)

Примери:

ВходИзход
0 0
1 1
3 4
144 12
1597 17
4636824

Задача 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