# Задачи - УПП, Седмица 6, 06.11.2025
'define expected-reading 10 min
'define created 01 November 2025
'define edited 06 November 2025
[$pagenav]
GitHub Classroom: [url https://classroom.github.com/a/JSB1UK_f]
## За решаване
### Задача 1
.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week06/Exercise01.cpp Решение]
През 1837 година, [url https://en.wikipedia.org/wiki/Charles_Babbage Чарлз Бабидж] пита въпроса:
.quote
What is the smallest positive integer whose square ends in the digits 269,696?
Според него това число е 99736 (чиито квадрат е 9947269696).
Напишете програма, която =[намира]= най-малкото число, отговарящо на въпроса.
:table_2
|= Вход
|= Изход
|:
|: 25264
### Задача 2
.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week06/Exercise02.cpp Решение]
От входа получавате 8 цели положителни числа.
Трябва да изкарате най-голямото общо делимо между всички тези числа.
:table_2
|= Вход
|= Изход
|: 8 8 8 8 8 8 8 8
|: 8
|: 2 6 14 8 20 4 12 14
|: 2
|: 318 577 200 235 72 333 947 37
|: 1
### Задача 3
.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week06/Exercise03.cpp Решение]
Получавате цяло положително число.
В него трябва да замените всички срещания на най-срещаната цифра с 0.
Ако има няколко такива цифри, трябва да замените само най голямата от тях.
:table_2
|= Вход
|= Изход
|: 1
|: 0
|: 5
|: 0
|: 10
|: 0
|: 15
|: 10
|: 99
|: 0
|: 9988
|: 88
|: 138783
|: 130703
|: 535735737
|: 535035030
### Задача 4
.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week06/Exercise04.cpp Решение]
Получавате една редица от 15 цели числа и след това втора редица с 5 цели уникални числа.
Трябва да върнете броя срещания в първата редица на всяко от числата във втората редица.
:table_2
|= Вход
|= Изход
|: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 2 3 4 5
|: 1 1 1 1 1
|: 1 2 2 1 1 2 0 2 1 1 0 2 2 1 1
-9 0 1 2 300
|: 0 2 7 6 0
### Задача 5
.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week06/Exercise05.cpp Решение]
От входа получавате две реални числа: координати на точка в равнината.
Спрямо следното изображение:
[image ./img/rectangle_and_line.png]
изкарайте дали точката е в защрихованата област или не.
Областта =[не]= включва правата и правоъгълника!
Зачитайте, че черните прави отбелязват главните оси, а разстоянията между съседни сиви оси е единица.
:table_2
|= Вход
|= Изход
|: 0 0
|: Outside
|: -1 0
|: Outside
|: -1.1 0
|: Inside
|: -2 1
|: Inside
|: -4 2
|: Outside
|: -3.9 1.9
|: Inside
|: -4 -1
|: Outside
|: -3.9 -0.9
|: Inside
|: 1 2
|: Outside
|: 0.9 2
|: Outside
|: 1 1.9
|: Outside
|: 0.9 1.9
|: Outside
|: 0.8 1.9
|: Inside
### Задача 6
.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week06/Exercise06.cpp Решение]
От входа получавате цяло положително число.
Трябва да върнете дали то е [url https://en.wikipedia.org/wiki/Happy_number щастливо].
Нека да вземем нашето число и да го заменим със сумата на всички свои цифри, повдигнати на квадрат.
Оригиналното число е щастливо, ако след краен брой прилагания на тази операция, получим числото 1.
Когато число не е щастливо, влизаме в безкрайния цикъл 4, 16, 37, 58, 89, 145, 42, 20, 4, 16, ...
Това е единствения възможен цикъл в който нещастно число може да попадне.
:table_2
|= Вход
|= Изход
|: 1
|: Happy
|: 7
|: Happy
|: 14
|: Not happy
|: 28
|: Happy
|: 318
|: Not happy
|: 319
|: Happy
|: 320
|: Happy
|: 888
|: Happy
### Задача 7
.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week06/Exercise07.cpp Решение]
От входа получавате 6 реални числа.
Пресметнете съответните 6 [url https://en.wikipedia.org/wiki/Prefix_sum префиксни суми] и ги изкарайте.
Това са сумите на всички числа до сега.
Тоест, префиксната сума на второто число е сумата на първото и второто число.
Префиксата сума на третото число е сумата на първото, второто и третото число.
:table_2
|= Вход
|= Изход
|: 1 2 3 4 5 6
|: 1 3 6 10 15 21
|: 30.86 967.214 85 515.27 -453 -37.79
|: 30.86 998.074 1083.07 1598.34 1145.34 1107.55
### Задача 8
.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week06/Exercise08.cpp Решение]
От входа получавате две реални числа: координати на точка в равнината.
Спрямо следното изображение:
[image ./img/two_circles.png]
изкарайте дали точката е в защрихованата област или не.
Областта =[не]= включва самите окръжности!
Зачитайте, че черните прави отбелязват главните оси, а разстоянията между съседни сиви оси е единица.
:table_2
|= Вход
|= Изход
|: 1 1
|: Outside
|: -1.5 -2.5
|: Outside
|: 0 2
|: Outside
|: 0 2.1
|: Inside
|: -1 2
|: Inside
|: 4 0
|: Outside
|: 3.9 0
|: Inside
|: 3 0
|: Inside
|: 3 -1
|: Outside
|: 3 -2
|: Inside
|: 2.586 -2.5356
|: Inside
|: 2.5356 -2.586
|: Outside
|: -1.54 1.584
|: Inside
|: -1.55 1.55
|: Outside
### Задача 9
.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week06/Exercise09.cpp Решение]
От входа получавате 10 цели числа.
Трябва да върнете дали сред тях същестуват три числа (на различни позиции), чиято сума е равна на 0.
:table_2
|= Вход
|= Изход
|: 1 -2 3 -4 5 -6 7 -8 9 -10
|: Exists
|: 2 4 45 6 -10 5 -45 8 23 11
|: Exists
|: 1 4 45 6 -11 4 -45 8 23 11
|: Doesn't exist
### Задача 10
.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week06/Exercise10.cpp Решение]
От входа получавате четири трицифрени цели неотрицателн числа.
Трябва да върнете най-голямото възможно цяло число, което се получава след "слепване" на тези числа.
*[Не е нужно да използвате сортиращ алгоритъм!]*
:table_2
|= Вход
|= Изход
|: 100 200 300 400
|: 400300200100
|: 552 285 732 937
|: 937732552285
|: 492 352 289 382
|: 492382352289
### Задача 11
.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week06/Exercise11.cpp Решение]
От входа получавате две реални числа: координати на точка в равнината.
Спрямо следното изображение:
[image ./img/triangle_and_circle.png]
Областта =[не]= включва правата и правоъгълника!
Зачитайте, че черните прави отбелязват главните оси, а разстоянията между съседни сиви оси е единица.
:table_2
|= Вход
|= Изход
|: -1 1
|: Inside
|: -1 -1
|: Outside
|: -2 -1
|: Inside
|: 2 2
|: Inside
|: 3 2
|: Outside
|: 2.9 2
|: Inside
|: 0 1.5
|: Inside
|: 1 1.5
|: Outside
|: 2 1.5
|: Inside
|: 2 1.1
|: Outside
|: -3.354 -1.831
|: Inside
|: 1.864 1.356
|: Inside
|: 1.73 1.287
|: Outside
## За самоподготовка
### Задача 12
.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week06/Exercise12.cpp Решение]
От входа получавате цяло неотрицателно число.
Трябва да върнете дали е [url https://en.wikipedia.org/wiki/Sum-product_number число на "сума-произведение"].
С други думи, дали е равно на сумата на цифрите си, умножено по умнежнието на цифрите.
:table_2
|= Вход
|= Изход
|: 0
|: Sum-product number
|: 2
|: Not a sum-product number
|: 22
|: Not a sum-product number
|: 135
|: Sum-product number
|: 1337
|: Not a sum-product number
### Задача 13
.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week06/Exercise13.cpp Решение]
От входа получавате цяло положително число.
Трябва да върнете всички негови делители.
:table_2
|= Вход
|= Изход
|: 5
|: 1 5
|: 15
|: 1 3 5
|: 16
|: 1 2 4 8 16
|: 137
|: 1 137
|: 864
|: 1 2 3 4 6 8 9 12 16 18 24 27 32 36 48 54 72 96 108 144 216 288 432 864
### Задача 14
.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week06/Exercise14.cpp Решение]
От входа получавате две цели неотрицателни числа.
Трябва да намерите [url https://en.wikipedia.org/wiki/Tetration тетрацията] на първото числото на степен второто число.
Както нормалното степенуване е повторено умножение, така тетрацията е повторено степенуване.
Число на тетрация "степен" озачава, че числото се повдига на нормална степен себе си, тетрация степен на брой пъти.
Тетрацията расте бързо, използвайте най-големия възможен тип.
:table_2
|= Вход
|= Изход
|: 2 4
|: 65536
|: 3 1
|: 3
|: 3 2
|: 27
|: 3 3
|: 7625597484987
|: 8 2
|: 16777216
### Задача 15
.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week06/Exercise15.cpp Решение]
От входа получавате 8 цели неотрицателни числа.
Трябва да върнете най-малкото общо кратно на всеки две съседни числа.
Най-малко общо кратно е най-малкото число, което се дели без остатък на двете числа.
:table_2
|= Вход
|= Изход
|: 1 2 3 4 5 6 7 8
|: 2 6 12 20 30 42 56
|: 4 6 9 389 13 13 2 8
|: 12 18 3501 5057 13 26 8
### Задача 16
От входа получавате две реални числа: координати на точка в равнината.
Спрямо следното изображение:
[image ./img/rectangles_and_circle.png]
изкарайте дали точката е в защрихованата област или не.
Зачитайте, че всяка сива права отбелязва брой единици разстояние от нулата.
:table_2
|= Вход
|= Изход
|: 0 0
|: Outside
|: -1 -1
|: Outside
|: -0.5 -0.5
|: Inside
|: 0 0.75
|: Inside
|: 2 0
|: Outside
|: 1.5 0
|: Outside
|: 1.5 0.1
|: Inside
|: 1 0.5
|: Outside
### Задача 17
.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week06/Exercise17.cpp Решение]
От входа получавате две естествени числа, `[a]` и `[b]`.
Трябва да върнете дали `[a]` е [url https://en.wikipedia.org/wiki/Unitary_divisor унитарен делител] на `[b]`.
Това е изпълнено, когато `[a]` е делител на `[b]` и най-големия общ делител на `[a]` и `[b / a]` е 1.
:table_2
|= Вход
|= Изход
|: 5 60
|: Unitary divisor
|: 6 60
|: Not a unitary divisor
|: 5 10
|: Unitary divisor
|: 4 12
|: Unitary divisor
|: 6 12
|: Not a unitary divisor
### Задача 18
.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week06/Exercise18.cpp Решение]
От входа получавате 10 реални числа.
Трябва да върнете най-голямата възможна сума, получена чрез събиране на колкото и дълга =[последователна]= редица от елементи.
:table_2
|= Вход
|= Изход
|: 1 2 3 4 5 6 7 8 9 10
|: 55
|: -2 -1 0 1 2 3 4 5 6 7
|: 28
|: -2 1 -3 4 -1 2 1 -5 4 -9
|: 6
|: -4 13.3 5.5 7 -6.5 10 0 -15 2.1 3
|: 29.3