Логотип сайта

Подготовка к ЕГЭ и ОГЭ

  • Главная
  • Информация о сайте
  • Сочинения ЕГЭ
  • Выпускное сочинение
  • Поиск по сайту

Назовём маской числа последовательность цифр, в которой...

Категория: Информатика и ИКТ

Задание:

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

Например, маске 123*4?5 соответствуют числа 123405 и 12300405. Среди натуральных чисел, не превышающих 1010, найдите все числа, соответствующие маске 1?2157*4, делящиеся на 2024 без остатка.

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

Решение (программное, числовое)

Заметим, что на месте * может быть от 0 до 3 разрядов, так общее количество в числе будет не больше 10 и само число не больше 1010. Поэтому переберем все возможные значения для ? и * в порядке возрастания количества разрядов.

# числа без цифр на месте *
for a in range(10):
  x = 1021574 + a*10**5
  if x % 2024 == 0:
   print(x, x // 2024)

# числа с 1 до 3 цифрами на месте *
for pw in range(1, 4):
  for a in range(10):
   for b in range(10**pw):
     x = 102157* 10**(pw+1) + 4 + a*10**(pw+5) + b*10
     if x % 2024 == 0:
       print(x, x // 2024) 

Вывод:
142157664 70236
1021575544 504731
1121571264 554136
1221577104 603546
1321572824 652951
1421578664 702361
1521574384 751766
1621570104 801171
1721575944 850581
1821571664 899986
1921577504 949396

Решение (программное строковое)

# через форматирование строки
# числа без цифр на месте *
for a in range(10):
 x = int(f'1{a}21574')
 if x % 2024 == 0:
  print(x, x // 2024)

# числа с 1 до 3 цифрами на месте *
for pw in range(1, 4):
 for a in range(10):
  for b in range(10**pw):
   x = int(f'1{a}2157{b:0{pw}}4')
   if x % 2024 == 0:
    print(x, x // 2024)

# через формирование всех комбинаций символов
from itertools import product

# числа без цифр на месте *
for a in range(10):
 x = int(f'1{a}21574')
 if x % 2024 == 0:
  print(x, x // 2024)

# числа с 1 до 3 цифрами на месте *
for pw in range(1, 4):
 for a in range(10):
  for b in product('0123456789', repeat=pw):
   x = int(f'1{a}2157{"".join(b)}4')
   if x % 2024 == 0:
    print(x, x // 2024) 

Вывод:
142157664 70236
1021575544 504731
1121571264 554136
1221577104 603546
1321572824 652951
1421578664 702361
1521574384 751766
1621570104 801171
1721575944 850581
1821571664 899986
1921577504 949396

Решение (программное, специализированная библиотека)

# переберем все числа от 0 до 1010 с шагом 2024 (кратные 2024)
from fnmatch import fnmatch

for x in range(0, 10**10 , 2024):
 # если число соответствует маске
 if fnmatch(f'{x}', '1?2157*4'):
  # выведем на экран искомую пару
  print(x, x // 2024) 

Вывод:
142157664 70236
1021575544 504731
1121571264 554136
1221577104 603546
1321572824 652951
1421578664 702361
1521574384 751766
1621570104 801171
1721575944 850581
1821571664 899986
1921577504 949396

Источник: Информатика с Джобсом | ЕГЭ

Похожие материалы
  • Определите, по какой из масок.. Подготовка к ЕГЭ (ИКТ)
  • Сколько единиц в двоичной записи десятичного числа 514?
  • Чем отличается позиционная система счисления..
  • Подготовка к ЕГЭ по информатике. Основы логики.
  • Сколько единиц в двоичной записи?
  • Напишите программу, печатающую значение EOF (Си)
  • А – множество четных чисел, В – множество двузначных чисел, С...
  • 1
  • 2
  • 3
  • 4
  • 5
Оценка: 5.0 из 1

💬 Чат ЕГЭ В Telegram. Вступить

Copyright Vopvet.Ru © 2025 Хостинг от uWeb