# Задачи > [!WARNING] > Имайте предвид, че не всички задачи се решават с масиви! ## За решаване ### Задача 1 От входа получавате 10 реални числа. Трябва да ги върнете в обратен ред. |Вход|Изход| |---|---| |1 2 3 4 5 6 7 8 9 10|10 9 8 7 6 5 4 3 2 1| |41.4 89.95 65 34.799 18.62 100.001 84.55 69.21 6 39.8| |39.8 6 69.21 84.55 100.001 18.62 34.799 65 89.95 41.4| ### Задача 2 От входа получавате 7 букви. Трябва да изкарате буквите в същата последователност, обаче завъртяни надясно с 3 позиции. |Вход|Изход| |---|---| |a b c d e f g|e f g a b c d| |k l m l j l b|j l b k l m l| ### Задача 3 От входа получавате 14 цели неотрицателни числа. Трябва да изкарате второто най-голямо число. Ако няма такова, просто изкарайте най-голямото. |Вход|Изход| |---|---| |1 2 3 4 5 6 7 8 9 10 11 12 13 14|13| |505 19 899 0 232 61 546 6 65 259 55 389 326 760|760| |9 9 9 9 9 9 9 9 9 9 9 9 9 9|9| ### Задача 4 От входа получавате две цели положителни числа. Трябва да върнете [факториел](https://en.wikipedia.org/wiki/Factorial#Definition) от първото число, който факториел е повдигнат на степен второто число. Факториел на едно (неотрицателно цяло) число е умножението на всички цели числа от 1 до самото число включително. Примерно, факториел от 5 е `1 * 2 * 3 * 4 * 5 = 120`. |Вход|Изход| |---|---| |5 1|120| |5 2|14400| |3 6|46656| |4 3|13824| |1 183|1| |2 8|256| ### Задача 5 От входа получавате 18 цели числа. Трябва да изкарате същата поредица числа, обаче всички нули са в началото на редицата. |Вход|Изход| |---|---| |1 0 0 2 3 4 0 5 0 6 0 0 0 7 8 0 9 0|0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9| |0 839 643 42 -694 57 650 729 -434 0 35 155 176 873 40 0 658 0| |0 0 0 0 839 643 42 -694 57 650 729 -434 35 155 176 873 40 658| .question Нужни ли са масиви, ако в условието трябваше да изкарвате нулите в края на поредицата? ### Задача 6 От входа получавате 15 цели числа. Трябва да изкарате дължината на най-дългата последователност от числа, която е подредена в нарастващ ред. Последователност от числа, която съдържа еднакви числа, също се зачита за сортирана в нарастващ ред. |Вход|Изход| |---|---| |1 2 3 0 0 0 6 7 8 8 8 -3 -2 -1 0|8| |1 1 1 1 1 1 1 1 1 1 1 1 1 1 1|15| |1 2 3 4 5 6 7 8 9 10 11 12 13 14 15|15| |4 -4 4 -4 4 -4 4 -4 4 -4 4 -4 4 -4 4|2| |15 14 13 12 11 10 9 8 7 6 5 4 3 2 1|1| |-539 -118 -431 53 -151 -151 -82 -40 640 -47 347 -50 -100 -198 984|5| ### Задача 7 От входата получавате цяло неотрицателно число. Върнете дали то е перфектно: дали е равно на сумата на всички свои делители, освен себе си. |Вход|Изход| |---|---| |6|Perfect| |7|Not perfect| |1337|Not perfect| |27|Not perfect| |28|Perfect| |29|Not perfect| |33550336|Perfect| |496|Perfect| |42|Not perfect| |8128|Perfect| ### Задача 8 От входа получавате две редици от по 10 реални числа (т.е. първите 10 числа са от първата редица, и вторите 10 числа образуват втората редица). След това получавате знак - аритметича операция (`+`, `-`, `*`, `/`). Трябва да изпълните операцията върху всяка съответна двойка числа от двете редици и да върнете резултатите. |Вход|Изход| |---|---| |1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
+| |2 4 6 8 10 12 14 16 18 20| |4.5 -16 194.1 919.01 1000.11 -27 12 444 71 0
0 8 12 56 10 0 3 14 1 0
/| |inf -2 16.175 16.41 100.011 -inf 4 31.714 71 -nan| ### Задача 9 От входа получавате реално число z между 0 (изключително) и 2 (включително), заедно с дължина n. Трябва да намерите стойността на логаритъм с основа ℯ ([Неперово число](https://en.wikipedia.org/wiki/E_%28mathematical_constant%29)) от това число, използвайки развитието по ред на Тейлър: ![](https://syndamia.com/teaching/upp-2025/week05/img/ln_taylor_series.png) като n определя колко елемента от реда да използвате. |Вход|Изход| |---|---| |1 1|0| |1.5 1|0.5| |1.5 3|0.416667| |1.5 9|0.405532| |1.5 20|0.405465| |0.5 1|-0.5| |0.5 5|-0.688542| |0.5 20|-0.693147| |0.01 20|-3.40687| |0.01 900|-4.60516| |0.01 1000|-4.60517| ### Задача 10 От входа получавате цяло неотрицатено число с максимум 8 цифри. Това число представлява сериен номер под [S10 стандарта за идентификационни номера на пратки](https://en.wikipedia.org/wiki/S10_%28UPU_standard%29). Трябва да пресметнете "контролната цифра" (check digit) на серийния номер. Това става по следния начин: .numbered 1. От ляво на дясно, трябва да умножите всяка цифра със съответната си "тежест": 8, 6, 4, 2, 3, 5, 9, 7 2. Сумирате умножените цифри 3. Пресмятате контролната цифра по формулата: `11 - <сума> mod 11`, където ако резултата е 10, цифрата е 0 и ако резултата е 11, цифрата е 5. |Вход|Изход| |---|---| |0|5| |1|4| |2|8| |8|0| |47312482|9| |87654321|6| |37153644|4| |30159181|5| ### Задача 11 От входа получавате цяло неотрицателно число. Изкарвате [числото на Лукас](https://en.wikipedia.org/wiki/Lucas_number) след толкова на брой позиции и ако числото =[не]= е било 0, приемаме ново число и повтаряте логиката. Тоест, ако първото число е n, тогава връщате `n`-тото число на Лукас.\n Ако второто число е m, тогава връщате `n + m`-тото число на Лукас. И така нататък. Числата на Лукас се определят по следния начин: ![](https://syndamia.com/teaching/upp-2025/week05/img/lucas_def.png) *[Вашия вход и изход може да са смесени!]* |Вход|Изход| |---|---| |0|2| |1 0|1 1| |2 0|3 3| |5 0|11 11| |2 3 0|3 11 11| |8 8 1 0|47 2207 3571 3571| ### Задача 12 От входа получавате 20 цели числа, всяко от които е индекс на елемент в масива (т.е. всяко е между 0 и 19 включително). Започвайки от първия елемент, вземате числената му стойност като индекс и "отивате" на тази позиция в масива. Аналогично, за текущия елемент, вземате числената стойност и индексирате. Така продължавате, докато не стигнете до последния елемент, когато алгоритъма спира. Целта е да преброите колко пъти "скачате" между различни числа и да изкарате тази бройка. Ако се поражда цикъл (посетим някое число повече от един път), тогава трябва да изкарате "Infinity". |Вход|Изход| |---|---| |1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 0|19| |19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0|1| |1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0|Infinity| |5 3 18 19 12 2 7 14 17 16 19 13 11 6 9 19 3 1 8 1|8| |4 3 18 9 12 2 7 14 17 16 19 13 11 6 9 19 3 1 8 1|Infinity| ## За самоподготовка ### Задача 13 От входа получавате 8 цели числа. След това получавате 9то цяло число. Трябва да върнете, сред 8те цели числа, колко често се среща 9тото. |Вход|Изход| |---|---| |1 2 3 4 5 6 7 8 9|0| |1 2 1 -3 2 -4 3 5 1|2| |8 1 7 8 8 1 7 -3 8|3| |0 0 0 0 0 0 0 0 0|8| ### Задача 14 От входа получавате 16 цели числа. Трябва да изкарате, на два реда, първо всички четни числа и после всички нечетни. |Вход|Изход| |---|---| |1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16|2 4 6 8 10 12 14 16
1 3 5 7 9 11 13 15| |-961 -46 86 871 657 96 -40 -297 -754 468 -5 662 -9 -392 82 255| |-46 86 96 -40 -754 468 662 -392 82
-961 871 657 -297 -5 -9 255| ### Задача 15 От входа получавате 12 реални числа. Трябва да върнете, на отделни редове, двойки числа от тази поредица: .bulleted - Първата двойка числа съдържа първото и последното число. - Втората двойка има второто и пред-посленото число. - И така нататък. |Вход|Изход| |---|---| |1 2 3 4 5 6 7 8 9 10 11 12| |1 12
2 11
3 10
4 9
5 8
6 7| |419.8 124.01 -47 915.5 31.99 769.89 505 58 -568.5 547.77 899.192 52| |419.8 52
124.01 899.192
-47 547.77
915.5 -568.5
31.99 58
769.89 505| ### Задача 16 От входа получавате две редици от по 5 цели числа (т.е. първите 5 числа са част от първата редица и вторите 5 числа са част от втората). Трябва да изкарате една редица от числа, където двете редици са преплетени: първо имаме първото число от първата редица, след това първото число от втората редица, след това второто число от първата редица и така нататък. |Вход|Изход| |---|---| |1 2 3 4 5 6 7 8 9 10|1 6 2 7 3 8 4 9 5 10| |0 1 0 1 0 1 0 1 0 1|0 1 1 0 0 1 1 0 0 1| ### Задача 17 От входа получавате цяло число в десетична бройна система. Трябва да изкарате дали то е [число на Армстронг](https://en.wikipedia.org/wiki/Narcissistic_number): число, което е равно на сумата на цифрите си, където всяка цифра е повдигната на степен, дължината на числото. |Вход|Изход| |---|---| |153|Narcissistic| |5|Narcissistic| |0|Narcissistic| |10|Not narcissistic| |407|Narcissistic| |54748|Narcissistic| ### Задача 18 От входа получавате 7 цели числа. Трябва да намерите индекса на равновесие: позиция сред числата, такава че сумата от първото число до индекса - 1 е равна на сумата на числата от индекса + 1 до последното число. Ако такаъв индекс не съществува, изкарате "No such index". |Вход|Изход| |---|---| |-7 1 5 2 -4 3 0|3| |5 5 4 2 1 3 8|No such index| ### Задача 19 От входа получавате две числа: реален ъгъл в радиани x и положителен максимален индекс n. Трябва да върнете стойността на синус от този ъгъл, използвайки реда на Тейлър: ![](https://syndamia.com/teaching/upp-2025/week05/img/sinx_taylor_series.png) където n определя с колко елемента от реда да смятаме. |Вход|Изход| |---|---| |0 1|0| |0.52359 15|0.499992| |1.57079 15|0.998356| |4.71238 5|-1.08189| ### Задача 20 От входа получавате цяло положително число. Трябва да валидирате това число използвайки [алгоритъма на Luhn](https://en.wikipedia.org/wiki/Luhn_algorithm): .numbered 1. Най-дясната цифра е "цифра за проверка", тя трябва да бъде изкарана за после. 2. Започвайки от най-дясната цифра (от останалите цифри, т.е. втората най-дясна в числото), трябва да умножите всяка втора цифра по две. Ако цифрата стане по-голяма от 9, трябва да *[извадите]* 9. 3. Сумирате всички цифри (всички умножени и неумножени). 4. Проверявате дали цифрата за проверка е равна на `(10 - (сумa mod 10)) mod 10` Този алгоритъм се използва главно в проверката на номера на дебитни/кредитни карти. Главната цел е да се засекат някои механични грешки при въвеждане на номера. |Вход|Изход| |---|---| |0|Valid| |1|Invalid| |1156|Valid| |1337|Invalid| |12345674|Valid| |13245674|Invalid| ### Задача 21 От входа получавате цяло неотрицателно число. Трябва да върнете съответното по индекс [число на Каталан](https://en.wikipedia.org/wiki/Catalan_number). n-тото число на Каталан се дефинира по следния начин: ![](https://syndamia.com/teaching/upp-2025/week05/img/catalan_def.png) Където `x!` е [факториел](https://en.wikipedia.org/wiki/Factorial#Definition) от x. Припомняме, че факториел на едно число е умножението на всички цели числа от 1 до самото число включително. |Вход|Изход| |---|---| |0|1| |1|1| |2|2| |5|42| |9|4862|