• У исполнителя Утроитель две команды, которым присвоены номера:




    1. прибавь 1,

    2. умножь на 3.



    Первая из них увеличивает число на экране на 1, вторая утраивает его. Программа для Утроителя — это последовательность команд. Сколько есть программ, которые число 3 преобразуют в число 36?

    Знаю, что не трудно, но времени нету.

Ответы 1

  • ((3 + 1) * 3) * 3 = 36((3) * 3 + 1 + 1 + 1) * 3 = 36((3) * 3 + 1 + 1) * 3 + 1 + 1 + 1 = 36((3) * 3 + 1) * 3 + 1 + 1 + 1 + 1 + 1 + 1 = 36(3 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1) * 3 = 36((3) * 3) * 3 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 36(3 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1) * 3 + 1 + 1 + 1 = 36(3 + 1 + 1 + 1 + 1 + 1 + 1 + 1) * 3 + 1 + 1 + 1 + 1 + 1 + 1 = 36(3 + 1 + 1 + 1 + 1 + 1 + 1) * 3 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 36(3 + 1 + 1 + 1 + 1 + 1) * 3 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 36(3 + 1 + 1 + 1 + 1) * 3 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 36(3 + 1 + 1 + 1) * 3 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 36(3 + 1 + 1) * 3 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 36(3 + 1) * 3 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 36(3) * 3 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 363 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 36Ответ 16def f0(number, log) #  v = 1  n = number + v  log += " + #{v}"  # log += "[" + n.to_s + "] "  return [n, log]enddef f1(number, log) #  v = 3  n = number * v  log = "(#{log}) * #{v}"  # log += "[" + n.to_s + "] "  return [n, log]enddef countWays(start_num, end_num, op_numbers, max_steps = 0)  ways = {}  ways.store(start_num.to_s, start_num)  max_steps = max_steps == 0 ? (start_num - end_num).abs : max_steps  count = 0  for steps in 1..max_steps      # puts "steps = #{steps}"      new_ways = {}      ways.each_pair{|log, num|          for k in 0..op_numbers-1              num1, log1 = f0(num, log) if k == 0              num1, log1 = f1(num, log) if k == 1              num1, log1 = f2(num, log) if k == 2              if num1 == end_num                  # and log.include?('[8]')              then                  log1 += " = " + end_num.to_s                  count += 1                  puts log1              elsif num1.between?(start_num, end_num)                  new_ways.store(log1, num1)              else                  # log1 = log1 + " = " + num1.to_s + " BAD "                  # puts log1              end          end      }      # p [steps, ways.size, new_ways.size]      ways = new_ways  end  return countend
    • Автор:

      dottie40
    • 6 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years