Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача о роботах
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Haret
Каждий год роботы обэдиняютса в касты по 3 или 5 роботов. За год одна каста из 3 роботов делает 5 новых, а каста з 5 9 новых роботов. Каждый робот существует 3 года после зборки. Решить сколька роботов будет через N годов.
(Вводятса K - количество роботов N - годы)

Помогите очень надо!
мисс_граффити
чем вот это решение не нравится?
Michael_Rybak
Мне оно не нравится тем, что там ничего не объясняют. Я имею ввиду эти строки

      if p=0 then y:=0
else if p=1 then begin x:=x-3; y:=2 end
else begin x:=x-1; y:=1 end;
мисс_граффити
а это необходимо?
пожалуйста:
разбиваем роботов на тройки. в х записываем количество троек. в p записываем количество "лишних" - 0,1 или 2.
если 0 - все прекрасно разбилось.
если 1 - тогда забираем 9 роботов из разбитых на тройки и получаем x-3 тройки и 2 пятерки (т.к. 9+1=10=5*2)
если p=2, забираем трех роботов и получаем 1 пятерку.
Michael_Rybak
А почему именно так, а не по-другому? Помоему, надо либо такое доказывать, либо вообще ничего не писать (на сайте), а только код приводить. Я имею ввиду вот это:

Цитата
Рассмотрим следующий вариант решения. Создадим массив R(3), где R1, R2, R3 - количество роботов соответствующего возраста. Тогда общее количество роботов S= R1+ R2+ R3. Обозначим x - количество троек, y - количество пятерок, которое можно сформировать из общего числа роботов (идея разбиения на тройки и пятерки рассмотрена в задаче 1.5). Каждый год роботы стареют, общее количество роботов увеличивается на 5x+9y и уменьшается на R3 (число роботов, проживших 3 года). Программа решения может быть записана так:


Сплошная вода. Главный ведь вопрос - почему, когда n mod 3 = 1, надо брать именно 9 роботов.
мисс_граффити
не поняла вопроса.
а какое минимальное число m ты подберешь, чтобы:
1. m делилось на 3
2. m+1 делилось на 5?

Или необходимость этих условий тоже надо доказывать?

...хотя по-хорошему надо рассмотреть варианты, что роботы на касты не смогут разбиться.
Michael_Rybak
Они могут всегда разбиться, оставив нескольких роботов вне каст. Вопрос в том, как это сделать оптимально. Я считаю, что оставить его нерассмотреным и считать само собой разумеющимся - неправильно.
Master_Kirr
Попробуй сперва поделить на 5, то что останется поделить на 3, затем сложить и к полученому прибавить то что останется после деления на три. Я проверял вроде сходится.
мисс_граффити
Master_Kirr, ты это кому объясняешь? Думаешь, человек за полгода не сделал и не сдал?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.