# Задачи
> [!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)) от това число, използвайки развитието по ред на Тейлър:

като 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`-тото число на Лукас.
И така нататък.
Числата на Лукас се определят по следния начин:

*[Вашия вход и изход може да са смесени!]*
|Вход|Изход|
|---|---|
|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.
Трябва да върнете стойността на синус от този ъгъл, използвайки реда на Тейлър:

където 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-тото число на Каталан се дефинира по следния начин:

Където `x!` е [факториел](https://en.wikipedia.org/wiki/Factorial#Definition) от x.
Припомняме, че факториел на едно число е умножението на всички цели числа от 1 до самото число включително.
|Вход|Изход|
|---|---|
|0|1|
|1|1|
|2|2|
|5|42|
|9|4862|