Шаблон решения прототипа с числовым отрезком
x = <начало интервала>
y = <конец интервала>
for i in range(x, y + 1):
if <условие>:
<вывод>
Шаблон решения прототипа с маской:
from fnmatch import *
for i in range (<число для кратности>, 10**10, <число д
ля кратности>):
if fnmatch(str(i), <маска>):
print(i, i//<число для кратности>)
Полезные функции на поиск делителей числа:
def delit(n):
a = []
for j in range(2, i):
if i % j == 0:
a.append( j)
return a
На перевод в другую систему счисления из 10-ой:
def system(n):
t = ''
while n > 0:
t = n % <система счисления> + t
n //= <система счисления>
return t
Пример задания с решением
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
– символ «?» означает ровно одну произвольную цифру;
– символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12300405 Среди натуральных чисел, не превышающих 106 найдите все числа, соответствующие маске 1234*5, у которых сумма делителей числа (отличных от единицы и самого числа) кратна 4. В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце сумму делителей числа.
for x in range(12345, 10**6):
st = str(x) #Проверка соответствия маске
if st[:4] == '1234' and st[-1] == '5':
s = 0 #Определение делителей числа
for i in range(2, x // 2 + 1):
if x % i == 0:
s = s + i
if s % 4 == 0:
print(x, s)
Ответ:
123415 24688
123425 29652
123435 108068
123455 24696
123475 43924
123495 74120
Прототипы с ЕГЭ
Задача №1
Назовём максой числа последовательность цифр, в которой также могут встречаться следующие символы:
- символ "?" означает ровно одну произвольную цифру.
- символ "*" означает любую последовательность цифр произвольной длины. Кроме того, "*" может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12300405.
Среди натуральных чисел, не превышающих 109, найдите все числа, соответствующие маске 1234?57?8, делящиеся на число 17 без остатка.
В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце - соответствующие им результаты деления этих чисел на 17.
Количество строк в таблице для ответы избыточно.
Ответ:
123405788 7259164
123435708 7260924
123445738 7261514
123455768 7262104
123465798 7262694
123495718 7264454
Задача №2 Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
– символ «?» означает ровно одну произвольную цифру;
– символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12300405.
Среди натуральных чисел, не превышающих 1010, найдите все числа, соответствующие маске 1?2139*4, делящиеся на 2023 без остатка.
В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце – соответствующие им результаты деления этих чисел на 2023. Количество строк в таблице для ответа избыточно.
Ответ:
162139404 80148
1321399324 653188
1421396214 702618
1521393104 752048
Задания уровня ЕГЭ
Задача №1 Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
- символ «?» означает ровно одну произвольную цифру;
- символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Среди натуральных чисел, не превышающих 1013, найдите все числа, соответствующие маске 12?345?67089?, делящиеся на 206 без остатка. В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце – соответствующие им результаты деления этих чисел на 206.
Ответ:
1203458670898 5842032383
1223459670896 5939124616
1233450670896 5987624616
1253451670894 6084716849
1273452670892 6181809082
1293453670890 6278901315
Задача №2 Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
— символ «?» означает ровно одну произвольную цифру;
— символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12300405.
Известно, что в числе, соответствующему маске 32*54?123, четное количество цифр, при этом в числе нет нулей и сумма левой половины цифр равна сумме правой половине цифр. Найдите все такие числа, кратные 519 и меньшие 1013. Выведите найденные числа в порядке возрастания, справа от них укажите значение, получаемое при делении числа на 519.
Пример с суммами: число 15233342 имеет сумму правой половины 1+5+2+4=12 и сумму левой половины 3+3+4+2=12.
Ответ:
321525543123 619509717
322167546123 620746717
323724546123 623746717
324366549123 624983717
325281546123 626746717
325923549123 627983717