This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Основная волна 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
from itertools import *
Импорт всех функций и классов из модуля itertools.
cnt = 0
Инициализация переменной cnt с начальным значением 0 для подсчета подходящих чисел.
for per in product('01234567', repeat=5):
Цикл for, который перебирает все возможные 5-значные комбинации из цифр '01234567' (с повторениями) с помощью функции product.
num = ''.join(per)
Преобразование кортежа per в строку num, объединив все цифры.
if num[0] != '0' and num[0] not in '1357':
Проверка условия: первая цифра числа не равна '0' и не принадлежит множеству '1357'.
if num[-1] not in '26' and num.count('7') <= 2:
Дополнительная проверка: последняя цифра числа не принадлежит множеству '26' и количество цифр '7' в числе не превышает 2.
cnt += 1
Увеличение счетчика cnt на 1 при выполнении всех условий.
print(cnt)
Вывод общего количества подходящих чисел, которые соответствуют заданным условиям.
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Основная волна 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
cnt = 0
Инициализация переменной cnt с начальным значением 0 для подсчёта подходящих ситуаций.
for s in open('9.csv'):
Цикл for, который проходит по каждой строке в файле '9.csv'.
M = sorted([int(x) for x in s.split(';')])
Создание списка M из целочисленных значений, полученных путём разделения строки s по символу ';' и последующей сортировки этих чисел.
if M[-1] < sum(M[:3]):
Проверка условия: если наибольшее из четырёх чисел меньше суммы трёх других чисел.
if len(set(M)) == 3:
Проверка условия: если количество уникальных элементов в списке M равно 3, что означает, что есть только одна пара равных чисел.
cnt += 1
Увеличение счётчика cnt на 1, если обе проверки выше выполняются.
print(cnt)
Вывод общего количества ситуаций, которые удовлетворяют заданным условиям.
Информатика ЕГЭ | itpy
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
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
This media is not supported in your browser
VIEW IN TELEGRAM
Строки представляют собой последовательность символов, заключенных в кавычки. Они являются одним из базовых типов данных и используются для хранения и манипуляции текстовой информацией.
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")
Информатика ЕГЭ | itpy
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Основная волна 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
import sys
Импорт модуля sys, который обеспечивает доступ к некоторым переменным и функциям, относящимся к Python и его среде.
sys.setrecursionlimit(10000)
Установка максимальной глубины рекурсии в 10000 для данной программы. Это предотвращает ошибку "RecursionError: maximum recursion depth exceeded", которая может возникнуть при слишком глубокой рекурсии.
def F(n):
Определение функции F с аргументом n.
if n == 1:
Условие проверки, равно ли значение n единице.
return 1
Возвращение значения 1, если условие n == 1 истинно.
if n > 1:
Условие проверки, больше ли значение n единицы.
return 2 * n * F(n-1)
Рекурсивный вызов функции F с аргументом n-1 в случае, если n > 1. Функция возвращает удвоенное произведение n на результат вызова F(n-1).
print((F(2024) // 16 - F(2023)) / F(2022))
Вызов функций F с аргументами 2024, 2023, и 2022, выполнение арифметических операций и вывод результата выражения.
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Основная волна 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
for x in range(2030+1):
Цикл for, который перебирает числа от 0 до 2030 включительно и присваивает каждое число переменной x.
n = 7**91 + 7**160 - x
Вычисление значения переменной n как суммы двух степеней числа 7 и значения x.
M = []
Инициализация списка M, который будет содержать цифры полученного числа n в семеричной системе счисления.
while n > 0:
Цикл while, который будет выполняться, пока значение n больше нуля.
M.append(n % 7)
Добавление остатка от деления текущего значения n на 7 в список M.
n //= 7
Целочисленное деление n на 7 для перехода к следующей цифре в семеричной записи.
M.reverse()
Разворот списка M, чтобы получить корректный порядок цифр числа в семеричной системе.
if M.count(0) == 70:
Проверка, содержит ли список M ровно 70 нулей.
print(x)
Вывод числа x, которое удовлетворяет условию с результатом семеричного представления числа n содержащего 70 нулей.
Информатика ЕГЭ | itpy
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
Думаю результаты уже пришли всем, и только ленивый не успел обсудить их. Меня, всё равно, интересует, какие баллы получили мои подписчики!?
И что ещё более интересно, как вы готовились к экзамену? Какие курсы проходили? Какие советы можете дать другим?
И что ещё более интересно, как вы готовились к экзамену? Какие курсы проходили? Какие советы можете дать другим?
Anonymous Poll
12%
0-40
22%
40-60
9%
60-70
21%
70-80
18%
80-90
7%
90-95
10%
95-100
Что выведет этот код? 🤔
1️⃣
2️⃣
3️⃣
Информатика ЕГЭ | itpy 👨💻
Поддержать автора донатом 💵
1️⃣
[-3, -6, -9]
2️⃣
[ ]
3️⃣
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]
Информатика ЕГЭ | itpy 👨💻
Поддержать автора донатом 💵
Информатика | Илья Андрианов | 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
This media is not supported in your browser
VIEW IN TELEGRAM
В мире математики делители числа имеют важное значение, и в 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)
принимает один аргумент x
, который является целым числом, для которого мы ищем делители.int(x ** 0.5) + 1
проходимся по всем числам от 1 до квадратного корня из x
.j
является делителем x
(то есть x % j == 0
), то мы добавляем j
и x // j
в список делителей div
, так как x // j
это сомножитель числа j
.▪️Вызов
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
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Основная волна 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
k = 0
Инициализация переменной k, которая будет считать количество найденных чисел.
for x in range(700_001, 10**10):
Цикл перебора чисел от 700001 до 10**10.
d = divisors(x)
Вызов функции divisors() для нахождения делителей числа x.
if len(d) >= 2:
Проверка наличия как минимум двух делителей.
M = min(d) + max(d)
Нахождение суммы минимального и максимального делителя числа x.
if abs(M) % 10 == 4:
Проверка условия: остаток от деления абсолютной величины суммы делителей M на 10 равен 4.
print(x, M)
Вывод числа x и суммы делителей M.
k += 1
Увеличение счетчика найденных чисел.
if k == 5:
Проверка, достигнут ли лимит в 5 найденных чисел.
break
Прерывание цикла после нахождения 5 чисел.
Информатика ЕГЭ | itpy
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
В 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
Что выведет этот код? 🤔
1️⃣
2️⃣
3️⃣
Информатика ЕГЭ | itpy 👨💻
Поддержать автора донатом 💵
1️⃣
Произойдет ошибка
2️⃣
0,9
3️⃣
(0, 3, 0, 3, 0, 3)
Информатика ЕГЭ | itpy 👨💻
Поддержать автора донатом 💵
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Основная волна 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
def F(x, a1, a2):
Определение функции F с параметрами x, a1 и a2.
P = 15 <= x <= 40
Проверка условия нахождения x в интервале от 15 до 40.
Q = 21 <= x <= 63
Проверка условия нахождения x в интервале от 21 до 63.
A = a1 <= x <= a2
Проверка условия нахождения x в интервале между a1 и a2.
return P <= ((Q and (not A)) <= (not P))
Возвращение результата выражения, описывающего взаимосвязь между P, Q, и A.
R = []
Инициализация пустого списка R, в который будут сохраняться значения.
M = [x / 4 for x in range(5 * 4, 80 * 4)]
Создание списка M с числами, равными x / 4, где x изменяется от 20 до 320 с шагом 1.
for a1 in M:
Цикл перебора значений из списка M для переменной a1.
for a2 in M:
Вложенный цикл перебора значений из списка M для переменной a2.
if all(F(x, a1, a2) for x in M):
Проверка условия с помощью функции F для всех значений x из списка M.
R.append(a2 - a1)
Добавление разности a2 - a1 в список R.
print(round(min(R)))
Вывод минимального значения из списка R после округления.
Информатика ЕГЭ | itpy
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Работа с файлами в 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()
Информатика ЕГЭ | itpy
Please open Telegram to view this post
VIEW IN TELEGRAM
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
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))
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
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
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
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