desktop/inf.jpg mobile/inf.jpg

Задание 25. Программирование. Обработка массивов. ЕГЭ 2023 по информатике

За это задание ты можешь получить 1 балл. На решение дается около 30 минут. Уровень сложности: высокий.
Средний процент выполнения: 40.2%
Ответом к заданию 25 по информатике может быть развернутый ответ (полная запись решения с обоснованием выполненных действий).
Разбор сложных заданий в тг-канале

Задачи для практики

Задача 1

Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:

— символ «?» означает ровно одну произвольную цифру;

— символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательноcть.

Среди натуральных чисел, не превышающих 109, найдите все числа, соответствующие маске 352*6?5*, являющиеся полными квадратами.

В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце — соответствующие им квадратные корни.

Решение
for num in range(1, 1000000):
    num = str(num)
    fl = False
    for i in range(len(num)-2):
        if num[i] == '6' and num[i+2] == '5':
            fl = True
    if fl:
        num = int('352'+num)
        if int(num ** 0.5) ** 2 == num:
            print(num, num ** 0.5)

Ответ:

352500625 18775

352763524 18782

Ответ:
Показать решение
Полный курс

Задача 2

Назовём маской числа последовательность состоящую из цифр и символ «*» и «?»:
— символ «?» означает ровно одну пропущенную цифру;
— символ «*» означает любую последовательность цифр, включая пустую.

Среди натуральных чисел, больших 106, найдите пять чисел, соответствующие маске 123*4?*9 и делящиеся на 13 без остатка. В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце — соответствующие им частные от деления на 13.

Решение

Запишем решение на языке Python:

k = 0
number = 10 ** 6 + 1
while k < 5:
    s =str(number)
    if s[:3] == '123' and s[-1] == '9' and '4' in s[3:-2] and number % 13 == 0:
        k += 1
        print(number, number // 13)
    number += 1

1230489 94653
1232439 94803
1233479 94883
1234129 94933
1234259 94943

Ответ:
Показать решение
Полный курс

Задача 3

Дан числовой отрезок натуральных чисел: [47584, 47684]. Напишите программу, которая ищет на данном отрезке числа, являющиеся простыми. Простое число - число, которое делится только на единицу и само число.

Для каждого найденного числа запишите через пробел порядковый номер и само число. Каждая следующая найденная пара пишется с новой строки в порядке возрастания простого числа. Например, если подошло два числа: 7 и 13, необходимо записать в ответ:

1 7

2 13

В качестве ответа прикрепите код программы, а также ответ в формате, указанном ранее.

Решение

Напишем код, где в основной программе будет перебираться диапазон наших числах, а проверка условия будет осуществляться в отдельной функции. Пример программы на Python:

def check_del(x):

max_del = 0

count = 0

for i in range(2, x//2+1):

if x % i == 0:

count += 1

max_del = i

if count == 2:

return max_del

else:

return -1

for x in range(47584, 47684 + 1):

num = check_del(x)

if num != -1:

print(x, num)

Ответ:

1 47591

2 47599

3 47609

4 47623

5 47629

6 47639

7 47653

8 47657

9 47659

10 47681

Ответ:
Показать решение
Полный курс

Задача 4

Дан числовой отрезок натуральных чисел: [10000, 14000]. Напишите программу, которая ищет на данном отрезке числа, у которых ровно два чётных делителя, не считая самого числа.

Для каждого найденного числа запишите через пробел само число и наибольший чётный делитель этого числа (кроме самого числа). Каждая следующая найденная пара пишется с новой строки в порядке возрастания первого числа. Например, если подошло два числа: 10 и 21, необходимо записать в ответ:

10 5

21 7

В качестве ответа прикрепите код программы, а также ответ в формате, указанном ранее.

Решение

Напишем код, где в основной программе будет перебираться диапазон наших числах, а проверка условия будет осуществляться в отдельной функции. Пример программы на Python:

def check_del(x):

max_del = 0

count = 0

for i in range(2, x//2+1, 2):

if x % i == 0:

count += 1

max_del = i

if count > 2:

return -1

if count == 2:

return max_del

else:

return -1

for x in range(10000, 14000 + 1):

num = check_del(x)

if num != -1:

print(x, num)

Ответ:

10082 142

10658 146

12482 158

13778 166

Ответ:
Показать решение
Полный курс

Задача 5

Дан числовой отрезок натуральных чисел: [1574, 1600]. Напишите программу, которая ищет на данном отрезке числа, у которых ровно шесть делителей, не считая единицы и самого числа.

Для каждого найденного числа запишите через пробел само число и наибольший делитель этого числа (кроме самого числа). Каждая следующая найденная пара пишется с новой строки в порядке возрастания первого числа. Например, если подошло два числа: 10 и 21, необходимо записать в ответ:

10 5

21 7

В качестве ответа прикрепите код программы, а также ответ в формате, указанном ранее.

Решение

Напишем код, где в основной программе будет перебираться диапазон наших числах, а проверка условия будет осуществляться в отдельной функции. Пример программы на Python:

def check_del(x):

max_del = 0

count = 0

for i in range(2, x//2+1):

if x % i == 0:

count += 1

max_del = i

if count > 6:

return -1

if count == 6:

return max_del

else:

return -1

for x in range(1574, 1600 + 1):

num = check_del(x)

if num != -1:

print(x, num)

Решение на C++:

int check(int val){
int count = 0, max = 0;
for (int i = 2; i <= val / 2; ++i)
if (val % i == 0){
count++;
max = i; // последний делитель - наибольший
}
if (count == 6)
return max;
return - 1;
}

int main(){
for (int i = 1574; i < 1601; ++i){
int rez = check(i);
if (rez != -1)
cout << i << " " << rez << endl;
}
return 0;
}

Ответ:

1576 788

1578 789

1581 527

1582 791

1586 793

1592 796

1593 531

1595 319

1598 799

1599 533

Ответ:
Показать решение
Полный курс

Задача 6

Дан числовой отрезок натуральных чисел: [124503, 124563]. Напишите программу, которая ищет на данном отрезке числа, у которых ровно шесть делителей, не считая единицы и самого числа.

Для каждого найденного числа запишите через пробел само число и наибольший делитель этого числа (кроме самого числа). Каждая следующая найденная пара пишется с новой строки в порядке возрастания первого числа. Например, если подошло два числа: 10 и 21, необходимо записать в ответ:

10 5

21 7

В качестве ответа прикрепите код программы, а также ответ в формате, указанном ранее.

Решение

Напишем код, где в основной программе будет перебираться диапазон наших числах, а проверка условия будет осуществляться в отдельной функции. Пример программы на Python:

def check_del(x):

max_del = 0

count = 0

for i in range(2, x//2+1):

if x % i == 0:

count += 1

max_del = i

if count > 6:

return -1

if count == 6:

return max_del

else:

return -1

for x in range(124503, 124563 + 1):

num = check_del(x)

if num != -1:

print(x, num)

Решение на C++:

int check(int val){
int count = 0, max = 0;
for (int i = 2; i <= val / 2; ++i)
if (val % i == 0){
count++;
max = i; // последний делитель - наибольший
}
if (count == 6)
return max;
return - 1;
}

int main(){
for (int i = 192; i <= 237; ++i){
int rez = check(i);
if (rez != -1)
cout << i << " " << rez << endl;
}
return 0;
}

Ответ:

124503 41501

124505 24901

124510 62255

124514 62257

124518 62259

124522 62261

124534 62267

124538 62269

124552 62276

124554 62277

124555 24911

124562 62281

Ответ:
Показать решение
Полный курс

Задача 7

Дан числовой отрезок натуральных чисел: [48724, 48768]. Напишите программу, которая ищет на данном отрезке числа, у которых ровно четыре делителя, не считая единицы и самого числа.

Для каждого найденного числа запишите через пробел само число и наибольший делитель этого числа (кроме самого числа). Каждая следующая найденная пара пишется с новой строки в порядке возрастания первого числа. Например, если подошло два числа: 10 и 21, необходимо записать в ответ:

10 5

21 7

В качестве ответа прикрепите код программы, а также ответ в формате, указанном ранее.

Решение

Напишем код, где в основной программе будет перебираться диапазон наших числах, а проверка условия будет осуществляться в отдельной функции. Пример программы на Python:

def check_del(x):

max_del = 0

count = 0

for i in range(2, x//2+1):

if x % i == 0:

count += 1

max_del = i

if count > 4:

return -1

if count == 4:

return max_del

else:

return -1

for x in range(48724, 48768 + 1):

num = check_del(x)

if num != -1:

print(x, num)

Ответ:

48725 9745

48749 1681

48753 16251

Ответ:
Показать решение
Полный курс

Задача 8

Дан числовой отрезок натуральных чисел: [14587, 20598]. Напишите программу, которая ищет на данном отрезке числа, у которых ровно три делителя, не считая единицы и самого числа.

Для каждого найденного числа запишите через пробел само число и наибольший делитель этого числа (кроме самого числа). Каждая следующая найденная пара пишется с новой строки в порядке возрастания первого числа. Например, если подошло два числа: 10 и 21, необходимо записать в ответ:

10 5

21 7

В качестве ответа прикрепите код программы, а также ответ в формате, указанном ранее.

Решение

Напишем код, где в основной программе будет перебираться диапазон наших числах, а проверка условия будет осуществляться в отдельной функции. Пример программы на Python:

def check_del(x):

max_del = 0

count = 0

for i in range(2, x//2+1):

if x % i == 0:

count += 1

max_del = i

if count == 3:

return max_del

else:

return -1

for x in range(14587, 20598 + 1):

num = check_del(x)

if num != -1:

print(x, num)

Ответ:

14641 1331

Ответ:
Показать решение
Полный курс

Задача 9

Дан числовой отрезок натуральных чисел: [214, 8475]. Напишите программу, которая ищет на данном отрезке числа, у которых ровно три делителя, не считая единицы и самого числа.

Для каждого найденного числа запишите через пробел само число и наибольший делитель этого числа (кроме самого числа). Каждая следующая найденная пара пишется с новой строки в порядке возрастания первого числа. Например, если подошло два числа: 10 и 21, необходимо записать в ответ:

10 5

21 7

В качестве ответа прикрепите код программы, а также ответ в формате, указанном ранее.

Решение

Напишем код, где в основной программе будет перебираться диапазон наших числах, а проверка условия будет осуществляться в отдельной функции. Пример программы на Python:

def check_del(x):

max_del = 0

count = 0

for i in range(2, x//2+1):

if x % i == 0:

count += 1

max_del = i

if count == 3:

return max_del

else:

return -1

for x in range(214, 8475 + 1):

num = check_del(x)

if num != -1:

print(x, num)

Ответ:

625 125

2401 343

Ответ:
Показать решение
Полный курс

Задача 10

Дан числовой отрезок натуральных чисел: [25, 8700]. Напишите программу, которая ищет на данном отрезке числа, у которых сумма делителей (кроме самого числа) равна самому числу.

Для каждого найденного числа запишите через пробел само число и наибольший делитель этого числа (кроме самого числа). Каждая следующая найденная пара пишется с новой строки в порядке возрастания первого числа. Например, если подошло два числа: 6 и 24, необходимо записать в ответ:

6 3

24 12

В качестве ответа прикрепите код программы, а также ответ в формате, указанном ранее.

Решение

Решение на Python:

def check_del(x):
s = 0
max_del = 0
for i in range(1, x//2+1):
if x % i == 0:
s += i
max_del = i
if s == x:
return max_del
else:
return -1
for x in range(25, 8500 + 1):
num = check_del(x)
if num != -1:
print(x, num)

Решение на C++:

int check(int val){
int sum = 0, max = 0;
for (int i = 1; i <= val / 2; ++i)
if (val % i == 0) {
sum += i;
if (i > max) max = i;
}
if (sum == val)
return max;
else
return -1;
}
int main() {
for (int i = 28; i < 8701; ++i) {
int rez = check(i);
if (rez != -1)
cout << i << " " << rez << endl;
}
return 0;
}

Ответы:
28 14
496 248
8128 4064

Ответ:
Показать решение
Полный курс

Задача 11

Дан числовой отрезок натуральных чисел: [178247500, 178543044]. Напишите программу, которая ищет на данном отрезке числа, являющиеся квадратами натуральных чисел.

Для каждого найденного числа запишите через пробел само число и квадратом какого числа оно является. Каждая следующая найденная пара пишется с новой строки в порядке возрастания первого числа. Например, если подошло два числа: 16 и 25, необходимо записать в ответ:

16 4

25 5

В качестве ответа прикрепите код программы, а также ответ в формате, указанном ранее.

Решение

Напишем код, где в основной программе будет перебираться диапазон наших числах, а проверка условия будет осуществляться в отдельной функции. Пример программы на Python:

def square(x):

num = int(x ** 0.5)

if num**2 == x:

return num

else:

return -1

for x in range(178247500, 178543044 + 1):

num = square(x)

if num != -1:

print(x, num)

Ответ:

178249201 13351

178275904 13352

178302609 13353

178329316 13354

178356025 13355

178382736 13356

178409449 13357

178436164 13358

178462881 13359

178489600 13360

178516321 13361

178543044 13362

Ответ:
Показать решение
Полный курс

Задача 12

Дан числовой отрезок натуральных чисел: [2147850, 2478350]. Напишите программу, которая ищет на данном отрезке числа, являющиеся кубами натуральных чисел.

Для каждого найденного числа запишите через пробел само число и кубом какого числа оно является. Каждая следующая найденная пара пишется с новой строки в порядке возрастания первого числа. Например, если подошло два числа: 27 и 8, необходимо записать в ответ:

8 2

27 3

В качестве ответа прикрепите код программы, а также ответ в формате, указанном ранее.

Решение

Напишем код, где в основной программе будет перебираться диапазон наших числах, а проверка условия будет осуществляться в отдельной функции. Пример программы на Python:

def cube(x):

num = 1

while num**3 < x:

num += 1

if num**3 == x:

return num

else:

return -1

for x in range(2147850, 2478350 + 1):

num = cube(x)

if num != -1:

print(x, num)

Ответ:

2197000 130

2248091 131

2299968 132

2352637 133

2406104 134

2460375 135

Ответ:
Показать решение
Полный курс
Показать еще

Готовим к ЕГЭ на 85+ баллов и побеждаем лень

Каждый месяц 12 онлайн-занятий в дружелюбной атмосфере + 16 домашних работ с жесткими сроками.
Не готовишься — вылетаешь.

Подробнее о курсе