Summary Files Commits Branches @commit @diff @stats
path: root / src / teaching / upp-2023 / week4 / index.md
diff options
context:
space:
mode:
1 files changed, 16 insertions, 13 deletions
-rw-r--r--src/teaching/upp-2023/week4/index.md29
diff --git a/src/teaching/upp-2023/week4/index.md b/src/teaching/upp-2023/week4/index.md
index 8c865de..0d8093b 100644
--- a/src/teaching/upp-2023/week4/index.md
+++ b/src/teaching/upp-2023/week4/index.md
@@ -1,9 +1,12 @@
-# Задачи - УПП, Седмица 4, 26.10.2023
+# Задачи - УПП, Седмица 4, 27.10.2023
+
+GitHub classroom: [classroom.github.com/a/jqKaO1ny](https://classroom.github.com/a/jqKaO1ny)
## Задача 1 - Числен редактор
-Получавате число `N`, което ще е в обхвата от 1 до TODO.
+Получавате число `N`, което ще е в обхвата от 1 до 10000000000000000000.
Вашата програма трябва да поддържа няколко операции върху това число, включително копиране на редица от цифри в него и поставянето им в друга част на числото.
+Подробните операции ще получите по-късно, и не е нужно да валидирате вход или дали след дадена операция числото се побира в типа данни.
Първо, в тази задача индексите на цифрите в едно число започват от 1 и се броят от ляво на дясно.
Тоест, в числото "481395" на индекс 1 имаме 4, на индекс 2 имаме 8 и на индекс 6 имаме 5.
@@ -27,13 +30,13 @@
- `remove`, която приема число, начален индекс и дължина (в този ред)
Връща числото, без "дължина" на брой цифри от началния индекс
- Пример: `get(481395, 3, 3)` връща `485`
+ Пример: `remove(481395, 3, 3)` връща `485`
-- `insert`, която приема число, краен индекс, дължина и число за вмъкване
- Връща числото, като на стария краен индекс намираме края на вмъкнатото число с дължина "дължина"
+- `insert`, която приема число, начален индекс, дължина и число за вмъкване
+ Връща числото, като на началния индекс намираме началото на вмъкнатото число с дължина "дължина"
Ефектът, е че числото се вмъква на дадения индекс, обаче избутва цифрите в ляво от него, вместо тези от дясно.
- Пример: `insert(495, 2, 4, 1001)` връща `4910015`
+ Пример: `insert(495, 2, 4, 1001)` връща `4100195`
### Подточка б) Композитните функции
@@ -45,7 +48,7 @@
Пример: `copy(481395, 3, 4, 2)` връща `4139581395`
-- `cut`, която приема число, начален индекс, дължина и втори начален индекс
+- `cut`, която приема число, начален индекс, дължина и втори начален индекс
Връща числото, като "дължина" на брой цифри от (стария) начален индекс са преместени във втория начален индекс
Пример: `cut(481395, 3, 4, 2)` връща `413958`
@@ -80,10 +83,16 @@
|Вход|Изход|
|----|-----|
+|x 8504830028402847111 9 6 7|8504832840280047111|
+|p 8 968824945839039458|9688249458390394588|
+|a 968824945839039458 1|9688249458390394581|
+|r 9938175002843839 1 10 86998385021|86998385021843839|
## Задача 2 - Умножение на полиноми
Представяме полином чрез две числа, първото побитово определя дали x на конкретната степен съществува, докато второто определя коефициента (като цифра) пред всеки член, без значение дали съществува в полинома.
+Тоест, старшата степен на полинома е или най-левия бит или най-лявата цифра от двете числа.
+Числото с коефициенти е между 1 и 10000000000000000000.
Пример: първото число е 13, a второто е 3052.
Побитово `13 = 1101`, тоест ще имаме
@@ -156,9 +165,3 @@ V
**Упътване:**
Лесно се получава, ако занулим цифрите които първия играч е посетил.
Още по-лесно става ако използвате функции от първата задача.
-
-**Примери**
-
-|Вход|Изход|
-|----|-----|
-