Информатика | Илья Андрианов | itpy 🧑‍💻
1.04K subscribers
264 photos
20 videos
19 files
630 links
По рекламе: @ilandroxxy

Шпаргалки: clck.ru/3FwqWt
📚 Наши курсы: clck.ru/3FwqYb

Разборы: clck.ru/3Fwqay
💬 Чатик: clck.ru/3FwqZa

📺 YouTube: clck.ru/3FwqbX

🙋‍♂️ Я автор: @ilandroxxy
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
🚩 Разбор номера 17521 #kege по информатике #ЕГЭ8
Автор: Основная волна 07.06.24
Уровень: Базовый


🚩 Условие задачи:
Определите количество восьмеричных пятизначных чисел, которые не начинаются с нечётных цифр, не оканчиваются цифрами 2 или 6, а также содержат не более двух цифр 7.


🚩 Теоретическая справка:
На kompege.ru появился вариант с заданиями к ЕГЭ 2024, ссылка тут.

В комментариях оставлю решение через цикл for.


👩‍💻 Код решения:
from itertools import *
cnt = 0
for per in product('01234567', repeat=5):
num = ''.join(per)
if num[0] != '0' and num[0] not in '1357':
if num[-1] not in '26' and num.count('7') <= 2:
cnt += 1
print(cnt)

# Ответ: 9135


👩‍💻 Комментарии к коду:

1⃣ from itertools import *
Импорт всех функций и классов из модуля itertools.


2⃣ cnt = 0
Инициализация переменной cnt с начальным значением 0 для подсчета подходящих чисел.


3⃣ for per in product('01234567', repeat=5):
Цикл for, который перебирает все возможные 5-значные комбинации из цифр '01234567' (с повторениями) с помощью функции product.


4⃣ num = ''.join(per)
Преобразование кортежа per в строку num, объединив все цифры.


5⃣ if num[0] != '0' and num[0] not in '1357':
Проверка условия: первая цифра числа не равна '0' и не принадлежит множеству '1357'.


6⃣ if num[-1] not in '26' and num.count('7') <= 2:
Дополнительная проверка: последняя цифра числа не принадлежит множеству '26' и количество цифр '7' в числе не превышает 2.


7⃣ cnt += 1
Увеличение счетчика cnt на 1 при выполнении всех условий.


8⃣ print(cnt)
Вывод общего количества подходящих чисел, которые соответствуют заданным условиям.


#⃣ Полный список разборов в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Поддержать автора донатом 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
7431
This media is not supported in your browser
VIEW IN TELEGRAM
🚩 Разбор номера 17522 #kege по информатике #ЕГЭ9
Автор: Основная волна 07.06.24
Уровень: Базовый


🚩 Условие задачи:
Определите количество строк таблицы, содержащих числа, для которых выполнены оба условия:
– наибольшее из четырёх чисел меньше суммы трёх других;
– среди четырёх чисел есть только одна пара равных чисел.


🚩 Теоретическая справка:
На kompege.ru появился вариант с заданиями к ЕГЭ 2024, ссылка тут.


👩‍💻 Код решения:
cnt = 0
for s in open('9.csv'):
M = sorted([int(x) for x in s.split(';')])
if M[-1] < sum(M[:3]):
if len(set(M)) == 3:
cnt += 1
print(cnt)

# Ответ: 147


👩‍💻 Комментарии к коду:

1⃣ cnt = 0
Инициализация переменной cnt с начальным значением 0 для подсчёта подходящих ситуаций.


2⃣ for s in open('9.csv'):
Цикл for, который проходит по каждой строке в файле '9.csv'.


3⃣ M = sorted([int(x) for x in s.split(';')])
Создание списка M из целочисленных значений, полученных путём разделения строки s по символу ';' и последующей сортировки этих чисел.


4⃣ if M[-1] < sum(M[:3]):
Проверка условия: если наибольшее из четырёх чисел меньше суммы трёх других чисел.


5⃣ if len(set(M)) == 3:
Проверка условия: если количество уникальных элементов в списке M равно 3, что означает, что есть только одна пара равных чисел.


6⃣ cnt += 1
Увеличение счётчика cnt на 1, если обе проверки выше выполняются.


7⃣ print(cnt)
Вывод общего количества ситуаций, которые удовлетворяют заданным условиям.


Информатика ЕГЭ | itpy 🧑‍💻
Поддержать автора донатом 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
855
👩‍💻 Полезные функции модуля math для подготовки к ЕГЭ: изучаем sqrt, prod, ceil, floor, factorial

math - это встроенный модуль в Python, который предоставляет доступ к математическим функциям и константам. Этот модуль позволяет выполнять различные математические операции, такие как вычисление квадратных корней, тригонометрические функции, логарифмы, степени, округления чисел и многое другое.

🚩sqrt(x)
Возвращает квадратный корень числа x:

import math

result = math.sqrt(25)
print(result) # Вывод: 5.0



🚩 prod(iterable)
Возвращает произведение всех элементов итерируемого объекта:
import math

numbers = [1, 2, 3, 4, 5]
result = math.prod(numbers)
print(result) # Вывод: 120 (произведение 1 * 2 * 3 * 4 * 5)



🚩ceil(x)
Возвращает наименьшее целое число, которое больше или равно x:
import math

result = math.ceil(3.14)
print(result) # Вывод: 4



🚩floor(x)
Возвращает наибольшее целое число, которое меньше или равно x:
import math

result = math.floor(3.14)
print(result) # Вывод: 3



🚩factorial(x)
Возвращает факториал числа x:
import math

result = math.factorial(5)
print(result) # Вывод: 120 (факториал числа 5)



Кстати, вместо import math можно написать import math as m , что позволит обращаться к модулю через переменную m (или любую другую, на ваш выбор). Это удобно для сокращения кода и повышения его читаемости.

Информатика ЕГЭ | itpy 👨‍💻
Поддержать автора донатом 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
954
This media is not supported in your browser
VIEW IN TELEGRAM
📱 Строки (str) в Python: основы работы и применение #tpy

Строки представляют собой последовательность символов, заключенных в кавычки. Они являются одним из базовых типов данных и используются для хранения и манипуляции текстовой информацией.


🔍Что можно делать со строками в Python?

1. Сравнение строк: Строки могут сравниваться между собой для определения равенства или порядка по алфавиту.

2. Конкатенация строк: С помощью оператора + можно объединять строки в одну.

3. Изменение строк: Строки в Python являются неизменяемыми, но можно создавать новые строки на основе существующих.

4. Поиск подстроки: Методы строк позволяют находить подстроки в других строках и многое другое.


📌 Примеры работы со строками:
str1 = "Hello"
str2 = "World"

# Конкатенация
result = str1 + " " + str2
print(result)

# Сравнение строк
if str1 == "Hello":
print("str1 равно Hello")

# Поиск подстроки
if "lo" in str1:
print("lo найдено в str1")



📚 Хотите узнать больше об операциях со строками в Python? Посетите нашу статью на Notion, в которой вы найдете подробные объяснения и примеры использования строк в Python.

Информатика ЕГЭ | itpy 🧑‍💻
Поддержать автора донатом 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
754
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 17557 #kege по информатике #ЕГЭ16
Автор: Основная волна 08.06.24
Уровень: Базовый


🚩 Условие задачи:
Алгоритм вычисления значения функции
F(n), где n – натуральное число, задан следующими соотношениями:
F(n)=1 при n=1;
F(n)=2×n×F(n–1), если n>1.
Чему равно значение выражения (F(2024)/16−F(2023))/F(2022)?


🚩 Теоретическая справка:
В этом номере на ЕГЭ 2024 попадалась ошибка: "OverflowError: integer division result too large for a float", исправить её можно было заменой действий "/" на "//".


👩‍💻 Код решения:
import sys
sys.setrecursionlimit(10000)

def F(n):
if n == 1:
return 1
if n > 1:
return 2 * n * F(n-1)

print((F(2024) // 16 - F(2023)) / F(2022))

# Ответ: 1019592


👩‍💻 Комментарии к коду:

1⃣ import sys
Импорт модуля sys, который обеспечивает доступ к некоторым переменным и функциям, относящимся к Python и его среде.


2⃣ sys.setrecursionlimit(10000)
Установка максимальной глубины рекурсии в 10000 для данной программы. Это предотвращает ошибку "RecursionError: maximum recursion depth exceeded", которая может возникнуть при слишком глубокой рекурсии.


3⃣ def F(n):
Определение функции F с аргументом n.


4⃣ if n == 1:
Условие проверки, равно ли значение n единице.


5⃣ return 1
Возвращение значения 1, если условие n == 1 истинно.


6⃣ if n > 1:
Условие проверки, больше ли значение n единицы.


7⃣ return 2 * n * F(n-1)
Рекурсивный вызов функции F с аргументом n-1 в случае, если n > 1. Функция возвращает удвоенное произведение n на результат вызова F(n-1).


8⃣ print((F(2024) // 16 - F(2023)) / F(2022))
Вызов функций F с аргументами 2024, 2023, и 2022, выполнение арифметических операций и вывод результата выражения.


#⃣ Полный список разборов в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Поддержать автора донатом 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
764
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 17555 #kege по информатике #ЕГЭ14
Автор: Основная волна 08.06.24
Уровень: Базовый


🚩 Условие задачи:
Значение арифметического выражения 7**91 + 7**160 – х, где х – целое положительное число, не превышающее 2030, записали в 7-ричной системе счисления. Определите наибольшее значение х, при котором в 7-ричной записи числа, являющегося значением данного арифметического выражения, содержится ровно 70 нулей.


👩‍💻 Код решения:
for x in range(2030+1):
n = 7**91 + 7**160 - x
M = []
while n > 0:
M.append(n % 7)
n //= 7
M.reverse()
if M.count(0) == 70:
print(x)

# Ответ: 2029


👩‍💻 Комментарии к коду:

1⃣ for x in range(2030+1):
Цикл for, который перебирает числа от 0 до 2030 включительно и присваивает каждое число переменной x.


2⃣ n = 7**91 + 7**160 - x
Вычисление значения переменной n как суммы двух степеней числа 7 и значения x.


3⃣ M = []
Инициализация списка M, который будет содержать цифры полученного числа n в семеричной системе счисления.


4⃣ while n > 0:
Цикл while, который будет выполняться, пока значение n больше нуля.


5⃣ M.append(n % 7)
Добавление остатка от деления текущего значения n на 7 в список M.


6⃣ n //= 7
Целочисленное деление n на 7 для перехода к следующей цифре в семеричной записи.


7⃣ M.reverse()
Разворот списка M, чтобы получить корректный порядок цифр числа в семеричной системе.


8⃣ if M.count(0) == 70:
Проверка, содержит ли список M ровно 70 нулей.


0⃣ print(x)
Вывод числа x, которое удовлетворяет условию с результатом семеричного представления числа n содержащего 70 нулей.


Информатика ЕГЭ | itpy 🧑‍💻
Поддержать автора донатом 💵💵
Please open Telegram to view this post
VIEW IN TELEGRAM
1064
Думаю результаты уже пришли всем, и только ленивый не успел обсудить их. Меня, всё равно, интересует, какие баллы получили мои подписчики!?

И что ещё более интересно, как вы готовились к экзамену? Какие курсы проходили? Какие советы можете дать другим?
Anonymous Poll
12%
0-40
22%
40-60
9%
60-70
21%
70-80
18%
80-90
7%
90-95
10%
95-100
Что выведет этот код? 🤔

1️⃣ [-3, -6, -9] 
2️⃣ [ ] 
3️⃣ [[1, 2, 3], [1, 2, 3], [1, 2, 3]] 

Информатика ЕГЭ | itpy 👨‍💻
Поддержать автора донатом 💵
853
Информатика | Илья Андрианов | itpy 🧑‍💻
Что выведет этот код? 🤔 1️⃣ [-3, -6, -9]  2️⃣ [ ]  3️⃣ [[1, 2, 3], [1, 2, 3], [1, 2, 3]]  Информатика ЕГЭ | itpy 👨‍💻 Поддержать автора донатом 💵
📱 Результатом этой программы будет пустой список.

Умножение списков на отрицательное число или на нуль равносильно удалению всех элементов списка 🤯
Please open Telegram to view this post
VIEW IN TELEGRAM
1254
This media is not supported in your browser
VIEW IN TELEGRAM
📱 Поиск делителей числа в Python: функция и примеры использования #tpy

В мире математики делители числа имеют важное значение, и в Python можно легко создать функцию, которая найдет все делители данного числа. Давайте рассмотрим функцию divisors(x):
def divisors(x):
div = []
for j in range(1, int(x ** 0.5) + 1):
if x % j == 0:
div += [j, x // j]
return sorted(set(div))



🔎 Как работает функция divisors(x)?

1⃣ Функция divisors(x) принимает один аргумент x, который является целым числом, для которого мы ищем делители.

2⃣ В цикле for от 1 до int(x ** 0.5) + 1 проходимся по всем числам от 1 до квадратного корня из x.

3⃣ Если число j является делителем x (то есть x % j == 0), то мы добавляем j и x // j в список делителей div, так как x // j это сомножитель числа j.

4⃣ Наконец, мы преобразуем список делителей во множество для устранения повторяющихся значений, затем сортируем его и возвращаем результат.


📝 Пример использования функции:

▪️Вызов divisors(24) вернет [1, 2, 3, 4, 6, 8, 12, 24], так как делители числа 24 - это все числа от 1 до 24, которые делят это число без остатка.

▪️Вызов divisors(16) вернет [1, 2, 4, 8, 16], поскольку делители числа 16 - это числа, которые можно поделить на 16, начиная с 1 и заканчивая самим 16.

Информатика ЕГЭ | itpy 🧑‍💻
Поддержать автора донатом 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
652
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 17564 #kege по информатике #ЕГЭ25
Автор: Основная волна 08.06.24
Уровень: Средний


🚩 Условие задачи:
Пусть М – сумма минимального и максимального натуральных делителей целого числа, не считая единицы и самого числа.

Напишите программу, которая перебирает целые числа, большие 700 000, в порядке возрастания и ищет среди них такие, для которых М оканчивается на 4.

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


🚩 Теоретическая справка:
В данной задаче нас просят не учитывать единицы и само число, поэтому диапазон в for j in range(2, int(x ** 0.5) + 1): начинаем с 2.

Кстати про саму функцию divisors() уже был пост.


👩‍💻 Код решения:
def divisors(x):
div = []
for j in range(2, int(x ** 0.5) + 1):
if x % j == 0:
div += [j, x // j]
return sorted(set(div))


k = 0
for x in range(700_001, 10**10):
d = divisors(x)
if len(d) >= 2:
M = min(d) + max(d)
if abs(M) % 10 == 4:
print(x, M)
k += 1
if k == 5:
break

# Ответ:
# 700004 350004
# 700009 41194
# 700023 233344
# 700024 350014
# 700044 350024


👩‍💻 Комментарии к коду:

1⃣ k = 0
Инициализация переменной k, которая будет считать количество найденных чисел.


2⃣ for x in range(700_001, 10**10):
Цикл перебора чисел от 700001 до 10**10.


3⃣ d = divisors(x)
Вызов функции divisors() для нахождения делителей числа x.


4⃣ if len(d) >= 2:
Проверка наличия как минимум двух делителей.


5⃣ M = min(d) + max(d)
Нахождение суммы минимального и максимального делителя числа x.


6⃣ if abs(M) % 10 == 4:
Проверка условия: остаток от деления абсолютной величины суммы делителей M на 10 равен 4.


7⃣ print(x, M)
Вывод числа x и суммы делителей M.


8⃣ k += 1
Увеличение счетчика найденных чисел.


0⃣ if k == 5:
Проверка, достигнут ли лимит в 5 найденных чисел.


🔟 break
Прерывание цикла после нахождения 5 чисел.


Информатика ЕГЭ | itpy 🧑‍💻
Поддержать автора донатом 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
1043
This media is not supported in your browser
VIEW IN TELEGRAM
📱 Импорт модулей в Python #tpy

В Python импорт модулей - это важный аспект, который позволяет использовать функциональность, определенную в других файлах, в своем коде. Этот подход делает программирование более организованным, уменьшает дублирование кода и упрощает совместную разработку.

При импорте модулей в Python вы можете использовать различные подходы, такие как:

1. Импорт всего модуля:
import module_name


2. Импорт конкретного объекта из модуля:
from module_name import object_name


3. Импорт модуля с псевдонимом:
import module_name as alias


Примеры использования импорта модулей:

# Импорт модуля math
import math
print(math.sqrt(16)) # Выведет 4.0

# Импорт функции randint из модуля random
from random import randint
print(randint(1, 10)) # Выведет случайное число от 1 до 10

# Импорт модуля datetime с псевдонимом dt
import datetime as dt
print(dt.datetime.now()) # Выведет текущую дату и время


Подробнее о импорте модулей в Python вы можете прочитать в данной статье на Notion, а также следите за интересными материалами в моём канале.

Информатика ЕГЭ | itpy 🧑‍💻
Поддержать автора донатом 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
843
Что выведет этот код? 🤔

1️⃣ Произойдет ошибка 
2️⃣ 0,9
3️⃣ (0, 3, 0, 3, 0, 3)

Информатика ЕГЭ | itpy 👨‍💻
Поддержать автора донатом 💵
942
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 17528 #kege по информатике #ЕГЭ15
Автор: Основная волна 07.06.24
Уровень: Базовый


🚩 Условие задачи:
На числовой прямой даны два отрезка: P=[15;40] и Q=[21;63].
Укажите наименьшую возможную длину такого отрезка A, для которого логическое выражение (x∈P)→(((x∈Q)∧¬(x∈A))→¬(x∈P)) истинно (т.е. принимает значение 1) при любом значении переменной х.

👩‍💻 Код решения:
def F(x, a1, a2):
P = 15 <= x <= 40
Q = 21 <= x <= 63
A = a1 <= x <= a2
return P <= ((Q and (not A)) <= (not P))

R = []
M = [x / 4 for x in range(5 * 4, 80 * 4)]
for a1 in M:
for a2 in M:
if all(F(x, a1, a2) for x in M):
R.append(a2 - a1)
print(round(min(R)))

# Ответ: 19


👩‍💻 Комментарии к коду:

1⃣ def F(x, a1, a2):
Определение функции F с параметрами x, a1 и a2.


2⃣ P = 15 <= x <= 40
Проверка условия нахождения x в интервале от 15 до 40.


3⃣ Q = 21 <= x <= 63
Проверка условия нахождения x в интервале от 21 до 63.


4⃣ A = a1 <= x <= a2
Проверка условия нахождения x в интервале между a1 и a2.


5⃣ return P <= ((Q and (not A)) <= (not P))
Возвращение результата выражения, описывающего взаимосвязь между P, Q, и A.


6⃣ R = []
Инициализация пустого списка R, в который будут сохраняться значения.


7⃣ M = [x / 4 for x in range(5 * 4, 80 * 4)]
Создание списка M с числами, равными x / 4, где x изменяется от 20 до 320 с шагом 1.


8⃣ for a1 in M:
Цикл перебора значений из списка M для переменной a1.


0⃣ for a2 in M:
Вложенный цикл перебора значений из списка M для переменной a2.


1⃣0⃣ if all(F(x, a1, a2) for x in M):
Проверка условия с помощью функции F для всех значений x из списка M.


1⃣1⃣ R.append(a2 - a1)
Добавление разности a2 - a1 в список R.


1⃣2⃣ print(round(min(R)))
Вывод минимального значения из списка R после округления.


Информатика ЕГЭ | itpy 🧑‍💻
Поддержать автора донатом 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
964
This media is not supported in your browser
VIEW IN TELEGRAM
💡 Работа с файлами Python #tpy

Работа
с файлами в Python - это важный аспект программирования, позволяющий читать, записывать и обрабатывать данные в файлах.
В данной статье мы рассмотрим основные методы и приемы, которые помогут вам в ваших работах.

А в следующем посту рассмотрим несколько примеров открытия файлов с ЕГЭ.

🚩 Открытие файла:
file = open("example.txt", "r")  # Открываем файл example.txt на чтение


🚩 Чтение содержимого файла:
content = file.read()
print(content)


🚩 Построчное чтение файла:
file = open("example.txt", "r")  # Открытие файла для чтения

for line in file:
print(line.strip())

file.close()


🚩 Более подробную информацию про работу с файлами вы можете изучить в нашей статье на Notion

Информатика ЕГЭ | itpy 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
652
🚩 Разбор ДВ #2024 номера #8 по информатике #ЕГЭ8

👩‍💻 Код решения:
from itertools import *
alphabet = sorted('0123456789QWERTYUIOPASDFGHJKLZXCVBNM')
cnt = 0
for per in product(alphabet[:17], repeat=5):
w = ''.join(per)
if w[0] != '0':
if w.count('3') == 1:
if len([x for x in w if x > 'C']) <= 3:
cnt += 1
print(cnt)



Информатика ЕГЭ | itpy 🧑‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
854
🚩🚩 Разбор ДВ #2024 номера #14 по информатике #ЕГЭ14

👩‍💻 Код решения 1:
def G(n, b):
r = ''
while n > 0:
r = str(n % b) + r
n //= b
return r

R = []
for x in range(1, 2030+1):
num = 6**2030 + 6**100 - x
s = G(num, 6)
R.append([s.count('0'), x])

print(max(R))


👩‍💻 Код решения 2:
R = []
for x in range(1, 2030+1):
num = 6**2030 + 6**100 - x
s = ''
while num > 0:
s = str(num % 6) + s
num //= 6
R.append([s.count('0'), x])

print(max(R))


Информатика ЕГЭ | itpy 🧑‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
853
🚩🚩 Разбор ДВ #2024 номера #25 по информатике #ЕГЭ25

👩‍💻 Код решения:
def divisors(x):
div = []
for j in range(1, int(x**0.5)+1):
if x % j == 0:
div += [j, x // j]
return sorted(set(div))


cnt = 0
for x in range(600_000+1, 10**10):
d = [j for j in divisors(x) if j % 10 == 7 and j != 7 and j != x]
if len(d) > 0:
print(x, min(d))
cnt += 1
if cnt == 5:
break


Информатика ЕГЭ | itpy 🧑‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
944
🚩 Разбор ДВ #2024 номера #5 по информатике #ЕГЭ5

👩‍💻 Код решения:
R = []
for n in range(1, 1000):
s = f'{n:b}' # s = bin(n)[2:]
if n % 2 == 0:
s = s + '10'
else:
s = '1' + s + '01'
r = int(s, 2)
if n < 11:
R.append(r)
print(min(R))


Информатика ЕГЭ | itpy 🧑‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
875
🚩 Разбор ДВ #2024 номера #7 по информатике #ЕГЭ7

👩‍💻 Код решения:
a = 2  # – Стерео
b = 72000 # – Частота дискретизации
# c = ? – Битовое разрешение
t = 28 * 60 + 40 # – Общая длительность 17 треков

bit_all = 14_680_064 * 380
print(bit_all) # 5578424320 – бит

bit = bit_all - 17 * 308 * 2**13 # – Кбайт перевожу в бит (для 17 треков)

c = bit / (a * b * t)
print(c) # 22.34952...



Информатика ЕГЭ | itpy 🧑‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
1055