diff options
| Commit | aeca0d6b2f3dfc30286180cc85fe99ea274cfc46 (patch) | |
|---|---|---|
| Author | 2023-12-15 08:27:51 +0200 | |
| Committer | 2023-12-15 08:27:51 +0200 | |
| Files | d416b9be0cece7cf835ae7e39448d2cf8e300e1e | |
| syndamia.com-aeca0d6b2f3dfc30286180cc85fe99ea274cfc46.tar syndamia.com-aeca0d6b2f3dfc30286180cc85fe99ea274cfc46.tar.gz syndamia.com-aeca0d6b2f3dfc30286180cc85fe99ea274cfc46.zip | ||
| Parent | e747f80bb029216e3faa7a27fe995f1d157ba7a4 (diff) | |
[te/upp-2023/w10] Added exercises
3 files changed, 90 insertions, 0 deletions
| -rw-r--r-- | src/teaching/upp-2023/index.md | 1 | ||||
| -rw-r--r-- | src/teaching/upp-2023/week10/img/fib.png | bin | 0 -> 6292 bytes | |||
| -rw-r--r-- | src/teaching/upp-2023/week10/index.md | 89 |
diff --git a/src/teaching/upp-2023/index.md b/src/teaching/upp-2023/index.md index 9ef5d77..7e8c1f4 100644 --- a/src/teaching/upp-2023/index.md +++ b/src/teaching/upp-2023/index.md @@ -28,3 +28,4 @@ |8 |24.11.2023|[Задачи](./week8) \|\| [Решения](https://github.com/Syndamia/upp-2023-solutions/tree/main/week08) \|\| [GitHub classroom](https://classroom.github.com/a/Big7FRUG)| |9 |01.12.2023|[Задачи](./week9) \|\| [GitHub classroom](https://classroom.github.com/a/lGXxCRZO)| | |04.12.2023|[Допълнително упражнение 2](./additional2/) \|\| [GitHub classroom](https://classroom.github.com/a/CrerXpf6)| +|10|15.12.2023|[Задачи](./week10) \|\| [GitHub classroom](https://classroom.github.com/a/EJcTQRz4)| diff --git a/src/teaching/upp-2023/week10/img/fib.png b/src/teaching/upp-2023/week10/img/fib.png Binary files differnew file mode 100644 index 0000000..b0bc958 --- /dev/null +++ b/src/teaching/upp-2023/week10/img/fib.png diff --git a/src/teaching/upp-2023/week10/index.md b/src/teaching/upp-2023/week10/index.md new file mode 100644 index 0000000..c7d5b86 --- /dev/null +++ b/src/teaching/upp-2023/week10/index.md @@ -0,0 +1,89 @@ +# Задачи - УПП, Седмица 10, 15.12.2023 + +GitHub classroom: [classroom.github.com/a/EJcTQRz4](https://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 18|6 | + +## Задача 2 + +От входа получавате неотрицателно число `N` и трябва да изкарате `N`-тото число на Фибоначи **чрез рекурсия**, като нулевото число е 0, първото е 1, второто е 1, третото е 2, четвъртото е 3 и так. нат. +Напомням, че математически фибоначи се дефинира така: + +<!-- +\begin{align*} +F_n = \left\{ \begin{array}{ll} +0, & n=0 \\ +1, & n=1 \\ +F_{n-1} + F_{n-2} & \text{иначе} \\ +\end{array} \right. +\end{align*} +--> + + + +**Примери:** + +|Вход|Изход| +|----|-----| +|0 |0 | +|1 |1 | +|4 |3 | +|12 |144 | +|17 |1597 | +|24 |46368| + +## Задача 3 + +От входа получавате положително число `N`, трябва да изкарате на екрана "рисунка", показваща формата на пясъчен часовник с височина `2N` (вижте примерите). + +**Примери:** + +|Вход|Изход| +|----|-----| +|1 |<pre>+<br>#</pre>| +|2 |<pre>+++<br> +<br> #<br>###</pre>| +|3 |<pre>+++++<br> +++<br> +<br> #<br> ###<br>#####</pre>| +|5 |<pre>+++++++++<br> +++++++<br> +++++<br> +++<br> +<br> #<br> ###<br> #####<br> #######<br>#########</pre>| + +## Задача 4 + +От входа получавате число `N`, след това тябва да изкарате на нови редове, в нарастващ ред, всички двоични числа, които могат да се представят с `N`-бита. +Вкарвате и водещи нули, тоест всяко число е съставено от точно `N` букви (`N` нули и единици). + +**Примери:** + +|Вход|Изход| +|----|-----| +|1 |0<br>1| +|2 |00<br>01<br>10<br>11| +|3 |000<br>001<br>010<br>011<br>100<br>101<br>110<br>111| +|4 |0000<br>0001<br>...<br>0111<br>1000<br>1001<br>...<br>1101<br>1110<br>1111| + +## Задача 5 + +Получавате един ред от терминала, в който ще имате скоби, знакът `+` и `*`, шпации и числа. +Това е прост математически израз, трябва да изкарате резултата след неговото пресмятане, като винаги около `число + число` и `число * число` има скоби (тоест не е нужно да се притеснявате от приоритет и асоциативност). + +За удобство спокойно може да ползвате `atoi` за конверитране на числовите части от низа в числа. + +**Примери:** + +|Вход|Изход| +|----|-----| +|(1 + 2)|3 | +|((2 + 9) * 3)|33| +|(((8 * 1) * (56 + 4)) + (19 * 2))|518| |