31 марта 2025 г.

Программирование. Задание № 6 "Анализ программ с циклами" (ЕГЭ-2023)

Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует 6 команд: Поднять хвост, означающая переход к перемещению без рисования; Опустить хвост, означающая переход в режим рисования; Вперёд n (где n – целое число), вызывающая передвижение Черепахи на n единиц в том направлении, куда указывает её голова; Назад n (где n – целое число), вызывающая передвижение в противоположном голове направлении; Направо m (где m – целое число), вызывающая изменение направления движения на m градусов по часовой стрелке, Налево m (где m – целое число), вызывающая изменение направления движения на m градусов против часовой стрелки.

Запись
Повтори k [Команда1 Команда2 … КомандаS]
означает, что последовательность из S команд повторится k раз. Черепахе был дан для исполнения следующий алгоритм:
Направо 90
Повтори 3 [Направо 45 Вперёд 10 Направо 45]
Направо 315 Вперёд 10
Повтори 2 [Направо 90 Вперёд 10]
Определите, сколько точек с целочисленными координатами будут находиться внутри области, которая ограничена линией, заданной алгоритмом. Точки на линии учитывать не следует.

Решение: Напишем программу на языке Phyton
#стартовые данные
import turtle as t #подключение "Черепашьей графики"
k = 20 #масштаб
t.left (90) #разворот "на север"
#1
t.right (90)
#2
for i in range (3):
  t.right (45)
  t.forward (k*10)
  t.right (45)
#3
t.right (315)
t.forward (k*10)
#4
for i in range (2):
  t.right (90)
  t.forward (k*10)
#построение сетки
for x in range (-15,8):
for y in range (-15,8):
     t.goto( x*k, y*k )  # в точку с заданными координатами
     t.dot( 2.5, 'red')  # ставим точку
done ()

Ответ: 203

21 марта 2025 г.

Программирование. Задание № 5 "Анализ алгоритмов для исполнителей"

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
  1. Строится двоичная запись числа N
  2. Далее эта запись обрабатывается по следующему правилу:
  • если сумма цифр двоичной записи чётная, то к этой записи справа дописывается 0, а два левых разряда заменяются на 10;
  • если сумма цифр двоичной записи нечётная, то к этой записи справа дописывается 1, а два левых разряда заменяются на 11.
Полученная таким образом запись является двоичной записью искомого числа R. Укажите минимальное число N, после обработки которого с помощью этого алгоритма получается число R, большее 50. В ответе запишите это число в десятичной системе счисления.

Решение. Напишем программу на языке Phyton

for n in range (2,25):
#1
  a = bin (n) [2:]
#2
  if a.count('1') % 2 == 0:
    a = '10' + a [2:] + '0'
  else:
    a = '11' + a [2:] + '1'
#3
  r = int(a,2)
  if r > 50:
    print (n,r)

Вывод:

19 55
21 59
22 61

Ответ: 19

16 марта 2025 г.

Программирование. Задание № 5 "Анализ алгоритмов для исполнителей"

Автомат обрабатывает десятичное натуральное число N по следующему алгоритму:

  1. Строится двоичная запись числа N.
  2. К полученному числу справа дописывается 0, если в числе единиц больше, чем нулей; иначе дописывается 1.
  3. Из середины двоичного числа убирается 2 разряда, если количество разрядов получилось четным, и 3 разряда, если нечетное.
  4. Результат переводится в десятичную систему.
Для скольких различных значений N в результате работы автомата получается число 46?

Решение. Напишtм программу на языке Phyton

k=0
for n in range (4,1000):
#1
  a = bin (n) [2:]
#2
  if a.count('1') > a.count('0'):
    a = a + '0'
  else:
    a = a + '1'
#3
  if len(a) % 2 == 0:
    d = int(len(a)/2)
    a = a [:d-1] + a [d+1:]
  else:
    d = int(len(a)//2) + 1
    a = a [:d-2] + a [d+1:]
#4
  x = int(a,2)
  if x == 46: 
    k+=1
print (k)

Ответ: 11

19 февраля 2025 г.

Информация. Задание № 8 "Комбинаторика"

Определите количество 12-ричных пятизначных чисел, в записи которых ровно одна цифра 7 и не более трёх цифр с числовым значением, превышающим 8.

Решение: напишем программу на языке Python

k=0

for c1 in '123456789AB':

  for c2 in '0123456789AB':

    for c3 in '0123456789AB':

      for c4 in '0123456789AB':

        for c5 in '0123456789AB':

          s = c1 + c2 + c3 + c4 + c5

          if s.count('7') == 1:

            k8 = s.count('9') + s.count('A') + s.count('B')

            if k8 < 4:

              k+=1

print(k)

Ответ: 67476

15 февраля 2025 г.

Информация. Задание № 8 "Комбинаторика"

Сколько существует чисел, девятеричная запись которых состоит из шести цифр, не начинается с нечётных цифр, не оканчивается цифрами 2 и 3 и содержит не менее двух цифр 1?

Решение: напишем программу на языке Python

k=0

for c1 in '2468':

  for c2 in '012345678':

    for c3 in '012345678':

      for c4 in '012345678':

        for c5 in '012345678':

          for c6 in '0145678':

            s = c1 + c2 + c3 + c4 + c5 + c6

            if s.count('1') >= 2:

              k+=1

print(k)

Ответ: 19868 

14 февраля 2025 г.

Информация. Задание № 8 "Комбинаторика"

Все пятибуквенные слова, составленные из букв К, О, М, П, Ь, Ю, Т, Е, Р, записаны в алфавитном порядке и пронумерованы. Начало списка выглядит так:

1. ЕЕЕЕЕ
2. ЕЕЕЕК
3. ЕЕЕЕМ
4. ЕЕЕЕО
5. ЕЕЕЕП
6. ЕЕЕЕР
7. ЕЕЕЕТ
8. ЕЕЕЕЬ
9. ЕЕЕЕЮ
...
Под каким номером в списке стоит последнее слово с нечётным номером, которое не начинается с буквы Ь и содержит ровно две буквы К?

Решение
1. Заменим буквы цифрами системы счисления по основанию 9: Е - 0, К - 1, М - 2, О - 3, П - 4, Р - 5, Т - 6, Ь - 7, Ю - 8.
2. Перефразируем условие, используя цифровые обозначения: Под каким номером в списке стоит последнее слово с нечётным номером, которое не начинается с цифры 7 и содержит ровно две цифры 1?
Предположим, что это 88811. 
3. Число 88811 записано в системе счисления по основанию 9. Переведем его в десятичную систему счисления.

888119 = 58978

4. Число 58978 стоит под номером 58979

Ответ: 58979

11 февраля 2025 г.

Информация. Задание № 8 "Комбинаторика"

Оля составляет семибуквенные слова перестановкой букв слова КОЛОКОЛ. Сколько всего различных слов может составить Оля?

Решение

1) Буква К повторяется 2 раза, О - 3 раза и Л - 2 раза.

2) Используем формулу для вычисления числа перестановок с повторениями

7! / 3! * 2! * 2! = 210

Ответ: 210