diff options
1 files changed, 48 insertions, 26 deletions
| -rw-r--r-- | src/teaching/upp-2023/week10/index.du | 74 |
diff --git a/src/teaching/upp-2023/week10/index.du b/src/teaching/upp-2023/week10/index.du index 746cacd..6a4bbe1 100644 --- a/src/teaching/upp-2023/week10/index.du +++ b/src/teaching/upp-2023/week10/index.du @@ -1,21 +1,25 @@ -# Задачи - УПП, Седмица 10, 15.12.2023 +'def title Задачи - УПП, Седмица 10, 15.12.2023 +'def desc Условия на задачите за упражнение + +# {title} \n -GitHub classroom: [url https://classroom.github.com/a/EJcTQRz4 classroom.github.com/a/EJcTQRz4] +GitHub classroom: {url classroom.github.com/a/EJcTQRz4;https://classroom.github.com/a/EJcTQRz4} -.important Във всички задачи [=трябва=] да използвате рекурсия! +.important Във всички задачи {b трябва} да използвате рекурсия! ## Задача 1 -Най-големия общ делител на числата [`a`] и [`b`] е най-голямото, число което ги дели без остатък. -Евклидовият алгоритъм се базира на факта, че за две положителни числа [`a`] и [`b`], като [`a > b`], НОД на [`a`] и [`b`] е същия като НОД на [`a - b`] и [`b`] и когато [`a = b`], тогава НОД на [`a`] и [`b`] е тяхната стойност. +Най-големия общ делител на числата {` a} и {` b} е най-голямото, число което ги дели без остатък. +Евклидовият алгоритъм се базира на факта, че за две положителни числа {` a} и {` b}, като {` a > b}, НОД на {` a} и {` b} е същия като НОД на {` a - b} и {` b} и когато {` a = b}, тогава НОД на {` a} и {` b} е тяхната стойност. -От входа получавате две цели положителни числа и трябва да изкарате техния НОД, чрез алгоритъма на Евклид [=имплементиран с рекурсия=]. +От входа получавате две цели положителни числа и трябва да изкарате техния НОД, чрез алгоритъма на Евклид {b имплементиран с рекурсия}. -[=Примери:=] +{b Примери:} -:table_2 +:table +:2 |= Вход |= Изход @@ -26,13 +30,15 @@ GitHub classroom: [url https://classroom.github.com/a/EJcTQRz4 classroom.github. |: 6 + ## Задача 2 -От входа получавате неотрицателно число [`N`], което ще бъде някое число на Фибоначи. +От входа получавате неотрицателно число {` N}, което ще бъде някое число на Фибоначи. Трябва да върнете кое по ред е, като 0 е нулевото, 1 е първото, 2 е третото, 3 е четвъртото и так. нат. Напомням, че математически фибоначи се дефинира така: .comment +'emplace \begin{align*} F_n = \left\{ \begin{array}{ll} 0, & n=0 \\ @@ -40,12 +46,14 @@ F_n = \left\{ \begin{array}{ll} F_{n-1} + F_{n-2} & \text{иначе} \\ \end{array} \right. \end{align*} +'endemplace -[image ./img/fib.png F(0) = 0; F(1) = 1; F(n) = F(n-1) + F(n-2)] +{img F(0) = 0\; F(1) = 1\; F(n) = F(n-1) + F(n-2);./img/fib.png} -[=Примери:=] +{b Примери:} -:table_2 +:table +:2 |= Вход |= Изход @@ -68,43 +76,52 @@ F_{n-1} + F_{n-2} & \text{иначе} \\ |: 24 + ## Задача 3 -От входа получавате положително число [`N`], трябва да изкарате на екрана "рисунка", показваща формата на пясъчен часовник с височина [`2N`] (вижте примерите). +От входа получавате положително число {` N}, трябва да изкарате на екрана "рисунка", показваща формата на пясъчен часовник с височина {` 2N} (вижте примерите). -[=Примери:=] +{b Примери:} -:table_2 +:table +:2 |= Вход |= Изход |: 1 |: ``` +'emplace + # +'endemplace |: 2 |: ``` +'emplace +++ + # ### +'endemplace |: 3 |: ``` +'emplace +++++ +++ + # ### ##### +'endemplace |: 5 |: ``` +'emplace +++++++++ +++++++ +++++ @@ -115,16 +132,19 @@ F_{n-1} + F_{n-2} & \text{иначе} \\ ##### ####### ######### +'endemplace + ## Задача 4 -От входа получавате число [`N`], след това тябва да изкарате на нови редове, в нарастващ ред, всички двоични числа, които могат да се представят с [`N`]-бита. -Вкарвате и водещи нули, тоест всяко число е съставено от точно [`N`] букви ([`N`] нули и единици). +От входа получавате число {` N}, след това тябва да изкарате на нови редове, в нарастващ ред, всички двоични числа, които могат да се представят с {` N}-бита. +Вкарвате и водещи нули, тоест всяко число е съставено от точно {` N} букви ({` N} нули и единици). -[=Примери:=] +{b Примери:} -:table_2 +:table +:2 |= Вход |= Изход @@ -159,26 +179,28 @@ F_{n-1} + F_{n-2} & \text{иначе} \\ ``` 0000 0001 -[*...*] +{i ...} 0111 1000 1001 -[*...*] +{i ...} 1101 1110 1111 + ## Задача 5 -Получавате един ред от терминала, в който ще имате скоби, знакът [`+`] и [`*`], шпации и числа. -Това е прост математически израз, трябва да изкарате резултата след неговото пресмятане, като винаги около [`число + число`] и [`число * число`] има скоби (тоест не е нужно да се притеснявате от приоритет и асоциативност). +Получавате един ред от терминала, в който ще имате скоби, знакът {` +} и {` *}, шпации и числа. +Това е прост математически израз, трябва да изкарате резултата след неговото пресмятане, като винаги около {` число + число} и {` число * число} има скоби (тоест не е нужно да се притеснявате от приоритет и асоциативност). -За удобство спокойно може да ползвате [`atoi`] за конверитране на числовите части от низа в числа. +За удобство спокойно може да ползвате {` atoi} за конверитране на числовите части от низа в числа. -[=Примери:=] +{b Примери:} -:table_2 +:table +:2 |= Вход |= Изход |