М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
kostyabriakin
kostyabriakin
26.07.2020 06:50 •  Информатика

ПИТОН Чтобы как-нибудь скоротать время до утра, Нильс набрал на берегу полную пригоршню плоских камешков, залез на корягу, валявшуюся у самой воды, и стал бросать камешки в море. Да не просто бросать, а так, чтобы они мячиком прыгали по лунной дорожке.

— Три… пять… семь… десять,— считал Нильс каждый удар камешка о воду.— Хорошо бы до самой луны добросить!

Ну, до Луны далеко, а вот камни сосчитать можно попробовать.

Напишите программу, которая выведет все числа, соответствующие отскокам камня от воды.

Формат ввода
Вводится число n, не большее 9, потом проверочное слово.

Затем вводятся строки, пока не будет введена строка ЛУНА. Эта строка служит признаком окончания ввода, в рассмотрении не участвует.

Формат вывода
Начало и конец диапазона для вывода чисел определяются так.

Среди введенных строк рассматриваются только те, у которых в числе, выражающем длину строки, нет цифры n. А среди них найти с наибольшей и наименьшей длиной.

Если в строке встретилось проверочное слово, то ввод нужно прекратить и перейти к выводу.

Вывести нужно все числа от длины большей строки до длины меньшей (включительно) с шагом, равным числу.

Пример 1
Ввод Вывод
3
море
Хорошо бы до самой луны добросить!
Тихонько вздохнув, Нильс выбрался из пещеры.
Ветер улёгся.
Небо очистилось от туч, и большая круглая луна стояла над самым входом в пещеру.
До утра было ещё далеко.
Чуть только он обогнул выступ скалы, как перед ним открылось море.
Оно лежало такое спокойное, точно бури никогда и не бывало.
ЛУНА
80 77 74 71 68 65 62 59 56 53 50 47 44 41 38 35 32 29 26
Пример 2
Ввод Вывод
3
гус
И вдруг Нильс вспомнил: монетка!
Ведь у него есть воронья монетка!
Это будет получше самого плоского камня.
Нильс растянулся на земле.
А монетка покатилась по отлогому берегу.
ЛУНА
40 37 34 31 28

👇
Открыть все ответы
Ответ:
((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 = 36
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 + 1 + 1 + 1 + 1 + 1 + 1 = 36
ответ 16

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

def f1(number, log) #
  v = 3
  n = number * v
  log = "(#{log}) * #{v}"
  # log += "[" + n.to_s + "] "
  return [n, log]
end

def 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 count
end
4,4(51 оценок)
Ответ:
((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 = 36
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 + 1 + 1 + 1 + 1 + 1 + 1 = 36
ответ 16

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

def f1(number, log) #
  v = 3
  n = number * v
  log = "(#{log}) * #{v}"
  # log += "[" + n.to_s + "] "
  return [n, log]
end

def 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 count
end
4,6(43 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ