sarycheva659
?>

Вычисление функции f(x)=|x|Началодуy= |x|Список данныхX, Y-вещдаX>0нетY:=-XYКонец

Информатика

Ответы

esnails17
Я приведу программное решение, так как это все-таки информатика. Аналитическое решение ищите по ссылке в комментариях

Код на Ruby 2

def f0(number, log) #
  v = 1
  n = number + v
  log = "#{log}A"
  return [n, log]
end

def f1(number, log) #
  v = 2
  n = number + v
  log = "#{log}B"
  return [n, log]
end

def f2(number, log) #
  v = 3
  n = number + v
  log = "#{log}C"
  return [n, log]
end

def countWays(start_num, end_num, op_number, 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
      new_ways = {}
      ways.each_pair{|log, num|

          for k in 0..op_number-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 then
                  log1 += " = " + end_num.to_s
                  count += 1
                  # puts log1
              elsif num1.between?(start_num, end_num)
                  new_ways.store(log1, num1)
              end
          end
      }
      ways = new_ways
  end
  return count
end

p countWays(0, 11, 3) # с 0 до 11, 3 разных команды

Вывод 504

Поскольку длина путей до ценного объекта и от объекта до базы - равны, то всего вариантов 504*504 = 254016
YelenaZOLTANOVICh105
Все удачные наборы команд должны включать остановку на отметке 11 футов.
На отметку 1 фут робот может попасть с одной команды A;
на отметку 2 фута - с команд AA и B (всего 2 набора команд);
на отметку 3 фута - с команд AAA, AB, BA и C (4 набора).
Так как за одну команду робот может переместиться на 1, 2 или 3 фута, то для подсчета количества наборов команд, позволяющих роботу попасть на отметки N > 3, можно использовать формулу
K(N) = K(N-1)+K(N-2)+K(N-3).
K(4) = K(3)+K(2)+K(1) = 4+2+1 = 7
K(5) = K(4)+K(3)+K(2) = 7+4+2 = 13
K(6) = K(5)+K(4)+K(3) = 13+7+4 = 24
K(7) = K(6)+K(5)+K(4) = 24+13+7 = 44
K(8) = K(7)+K(6)+K(5) = 44+24+13 = 81
K(9) = K(8)+K(7)+K(6) = 81+44+24 = 149
K(10) = K(9)+K(8)+K(7) = 149+81+44 = 274
K(11) = K(10)+K(9)+K(8) = 274+149+81 = 504
Так как вторая часть пути робота также имеет длину 11, то общее количество удачных наборов команд = 504*504 = 254016

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Вычисление функции f(x)=|x|Началодуy= |x|Список данныхX, Y-вещдаX>0нетY:=-XYКонец
Ваше имя (никнейм)*
Email*
Комментарий*