Задание 23. Оператор присваивания и ветвления. Перебор вариантов, построение дерева

Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

ВАРИАНТ 1 
Исполнитель Увеличитель преобразует число на экране. У исполнителя есть две команды, которым присвоены номера:

1. Прибавить 2
2. Прибавить 7

Первая команда увеличивает число на экране на 2, вторая увеличивает это число на 7. Программа для исполнителя Увеличитель – это последовательность команд. Сколько существует программ, которые число 5 преобразуют в число 49?

Решение и ответ
def f(n):
    if n==49:
        return 1
    elif n>49:
        return 0
    else:
        return f(n+2)+f(n+7)

print(f(5))

Ответ: 639

ВАРИАНТ 2

Исполнитель Увеличитель преобразует число на экране. У исполнителя есть две команды, которым присвоены номера:

1. Прибавить 2
2. Прибавить 7

Первая команда увеличивает число на экране на 2, вторая увеличивает это число на 7. Программа для исполнителя Увеличитель – это последовательность команд. Сколько существует программ, которые число 7 преобразуют в число 51?

Решение и ответ
def f(n):
    if n==51:
        return 1
    elif n>51:
        return 0
    else:
        return f(n+2)+f(n+7)

print(f(7))

Ответ: 639

ВАРИАНТ 3

Исполнитель Увеличитель преобразует число на экране. У исполнителя есть две команды, которым присвоены номера:

1. Прибавить 2
2. Прибавить 10

Первая команда увеличивает число на экране на 2, вторая увеличивает это число на 10. Программа для исполнителя Увеличитель – это последовательность команд. Сколько существует программ, которые число 5 преобразуют в число 141?

Решение и ответ

В задании опечатка, приведу решение для чисел (5, 41)
def f(n):
    if x==y:
        return 1
    elif x>y:
        return 0
    else:
        return f(x+2,y)+f(x+10,y)
print(f(5,41))

Ответ: 80

ВАРИАНТ 4

Исполнитель Увеличитель преобразует число на экране. У исполнителя есть две команды, которым присвоены номера:

1. Прибавить 2
2. Прибавить 10

Первая команда увеличивает число на экране на 2, вторая увеличивает это число на 10. Программа для исполнителя Увеличитель – это последовательность команд. Сколько существует программ, которые число 7 преобразуют в число 121?

Решение и ответ

В задании опечатка, ответ довольно большой.
def f(n):
    if x==y:
        return 1
    elif x>y:
        return 0
    else:
        return f(x+2,y)+f(x+10,y)
print(f(7,121))

Ответ: 4615966

ВАРИАНТ 5

Исполнитель Вычислитель преобразует число, записанное на экране. У исполнителя есть две команды, которым присвоены номера:

1. Вычти 1
2. Найди целую часть от деления на 2

Первая из них уменьшает число на экране на 1, вторая заменяет число на экране на число, равное целой части от деления числа на экране на 2.
Программа для Вычислителя — это последовательность команд. Сколько существует таких программ, которые преобразуют исходное число 30 в число 1, и при этом траектория вычислений программы содержит число 10?

Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы 121 при исходном числе 18 траектория будет состоять из чисел 17, 8, 7.

Решение и ответ
def f(x):
     if x==y:
        return 1
    elif x<y:
        return 0
    else:
        return f(x-1,y)+f(x//2,y)
print(f(30,10)*f(10,1))

Ответ: 360

ВАРИАНТ 6

Исполнитель Вычислитель преобразует число, записанное на экране. У исполнителя есть две команды, которым присвоены номера:

  1. 1. Вычти 1
  2. 2. Найди целую часть от деления на 2

Первая из них уменьшает число на экране на 1, вторая заменяет число на экране на число, равное целой части от деления числа на экране на 2.
Программа для Вычислителя — это последовательность команд. Сколько существует таких программ, которые преобразуют исходное число 31 в число 2, и при этом траектория вычислений программы содержит число 12?

Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы 121 при исходном числе 18 траектория будет состоять из чисел 17, 8, 7.

Решение и ответ
def f(x, y):
     if x==y:
        return 1
    elif x<y:
        return 0
    else:
        return f(x-1,y)+f(x//2,y)    print(f(31,12)*f(12,2))  

Ответ: 171

ВАРИАНТ 7

Исполнитель Вычислитель преобразует число, записанное на экране. У исполнителя есть две команды, которым присвоены номера:

  1. Вычти 1
  2. Найди целую часть от деления на 3

Первая из них уменьшает число на экране на 1, вторая заменяет число на экране на число, равное целой части от деления числа на экране на три.
Программа для Вычислителя — это последовательность команд. Сколько существует таких программ, которые преобразуют исходное число 33 в число 1, и при этом траектория вычислений программы содержит число 9?

Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы 121 при исходном числе 18 траектория будет состоять из чисел 17, 5, 4.

Решение и ответ
def f(x, y):
    if x==y:
        return 1
    elif x<y:
        return 0
    else:
        return f(x-1,y)+f(x//3,y) 

print(f(33,9)*f(9,1))

Ответ: 72

Комментарии  
admin
0 # admin 01.02.2023 21:23
Спасибо за замечание) Исправила!
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
zerox
0 # zerox 25.12.2022 15:21
В 6 варианте в ответе неправильный код. Написано def f(x), а должно быть def f(x, y). Исправьте!
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
Добавить комментарий


РСЯ футер

© 2017 Компьютерный клуб "КОД". Все права защищены.