Елена Васильева839
?>

Устав от участия в раундах на Codeforces, Гильдонг решил отдохнуть в парке. Он присел на лавку, и заметил двух кроликов, прыгающих поблизости. Он заметил, что два кролика прыгали навстречу друг другу. Позиции двух кроликов можно задать целочисленными координатами на горизонтальной прямой. Более высокий кролик изначально находится в точке с координатой , а более низкий — в точке с координатой (< Каждую секунду, каждый кролик прыгает на другую позицию. Более высокий кролик прыгает в положительном направлении на , а более низкий прыгает в отрицательном направлении на . Например, если =0 , =10, =2, и =3. После 1-й секунды, кролики будут в точках 2 и 7. После 2-й секунды, оба кролика будет в точке 4 . Гильдонг задумался: Будут ли когда-то два кролика в одной точке в один момент времени? Если будут, то через какое время это произойдет ему найти такую секунду, после которой оба кролика будут в одной точке. Входные данные Каждый тест состоит из одного или более наборов входных данных. В первой строке записано количество наборов входных данных (1≤≤1000 ). Каждый набор входных данных состоит из ровно одной строки. Строка состоит из четырех целых чисел , , , (0≤<≤109, 1≤, ≤109 ) — текущая позиция более высокого кролика, текущая позиция более низкого кролика, расстояние прыжка более высокого прыжка, расстояние прыжка более низкого кролика, соответственно. Выходные данные Для каждого набора входных данных, выведите одно целое число — количество секунд, через которое два кролика окажутся в одной точке. Если два кролика никогда не окажутся в одной точке одновременно, выведите −1 Язык c++

Информатика

Ответы

rashodnikoff
Программа на python 3, перебирающая все возможные последовательности определённой длины:
def shortest_chains(n):
  def next_chains(chain):
    new_elems = set()
    for i in range(len(chain)):
      for j in range(i, len(chain)):
        new_elem = chain[i] + chain[j]
        if new_elem > chain[-1] and new_elem not in new_elems:
          new_elems.add(new_elem)
          yield chain + [new_elem]
  
  current_stage = None
  next_stage = [[1]]
  answer = []
  while len(answer) == 0:
    current_stage = next_stage
    next_stage = []
    for chain in current_stage:
      next_stage.extend(next_chains(chain))
    answer = [chain[1:] for chain in next_stage if chain[-1] == n]
  return answer
    
def print_solution(n):
  answer = shortest_chains(n)
  print("Для {} есть {} решений(-я, -е):".format(n, len(answer)))
  for i in range(len(answer)):
    print("{}. {}".format(i + 1, " ".join(map(str, answer[i]
  print()

Запустив, можно получить все 5 возможных решений для числа 7, по 4 решения для 15 и 23 и 87 решений для 63.
asemchenko
Var h,h1,m,m1,k,k1,b:integer;
begin
write('h, h1: '); readln(h,h1);
write('m, m1: '); readln(m,m1);
write('k, k1: '); readln(k,k1);
if h div h1 < m div m1
 then b:=h div h1 else b:=m div m1;
if k div k1 < b then b:=k div k1;
writeln('b = ',b);
end.

Пример:
h, h1: 1000 100
m, m1: 600 50
k, k1: 500 50
b = 10

С определяется на сколько бутербродов хватит хлеба, масла или колбасы соответственно. Из этих количеств выбирается минимальное значение. В примере: хлеба хватит на 1000 div 100 = 10 бутербродов, масла - на 600 div 50 = 12; колбасы - на 500 div 50 = 10. Значит, из данного количество продуктов можно сделать 10 полноценных бутербродов.

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

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

Устав от участия в раундах на Codeforces, Гильдонг решил отдохнуть в парке. Он присел на лавку, и заметил двух кроликов, прыгающих поблизости. Он заметил, что два кролика прыгали навстречу друг другу. Позиции двух кроликов можно задать целочисленными координатами на горизонтальной прямой. Более высокий кролик изначально находится в точке с координатой , а более низкий — в точке с координатой (< Каждую секунду, каждый кролик прыгает на другую позицию. Более высокий кролик прыгает в положительном направлении на , а более низкий прыгает в отрицательном направлении на . Например, если =0 , =10, =2, и =3. После 1-й секунды, кролики будут в точках 2 и 7. После 2-й секунды, оба кролика будет в точке 4 . Гильдонг задумался: Будут ли когда-то два кролика в одной точке в один момент времени? Если будут, то через какое время это произойдет ему найти такую секунду, после которой оба кролика будут в одной точке. Входные данные Каждый тест состоит из одного или более наборов входных данных. В первой строке записано количество наборов входных данных (1≤≤1000 ). Каждый набор входных данных состоит из ровно одной строки. Строка состоит из четырех целых чисел , , , (0≤<≤109, 1≤, ≤109 ) — текущая позиция более высокого кролика, текущая позиция более низкого кролика, расстояние прыжка более высокого прыжка, расстояние прыжка более низкого кролика, соответственно. Выходные данные Для каждого набора входных данных, выведите одно целое число — количество секунд, через которое два кролика окажутся в одной точке. Если два кролика никогда не окажутся в одной точке одновременно, выведите −1 Язык c++
Ваше имя (никнейм)*
Email*
Комментарий*