Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Задача о роботах

Автор: Haret 20.11.2006 21:13

Каждий год роботы обэдиняютса в касты по 3 или 5 роботов. За год одна каста из 3 роботов делает 5 новых, а каста з 5 9 новых роботов. Каждый робот существует 3 года после зборки. Решить сколька роботов будет через N годов.
(Вводятса K - количество роботов N - годы)

Помогите очень надо!

Автор: мисс_граффити 20.11.2006 22:23

чем http://www.dstu.edu.ru/informatics/olimp/mtd1/ol_p3.html#zd4_4 не нравится?

Автор: Michael_Rybak 20.11.2006 22:36

Мне оно не нравится тем, что там ничего не объясняют. Я имею ввиду эти строки

      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;

Автор: мисс_граффити 20.11.2006 22:59

а это необходимо?
пожалуйста:
разбиваем роботов на тройки. в х записываем количество троек. в p записываем количество "лишних" - 0,1 или 2.
если 0 - все прекрасно разбилось.
если 1 - тогда забираем 9 роботов из разбитых на тройки и получаем x-3 тройки и 2 пятерки (т.к. 9+1=10=5*2)
если p=2, забираем трех роботов и получаем 1 пятерку.

Автор: Michael_Rybak 20.11.2006 23:07

А почему именно так, а не по-другому? Помоему, надо либо такое доказывать, либо вообще ничего не писать (на сайте), а только код приводить. Я имею ввиду вот это:

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


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

Автор: мисс_граффити 20.11.2006 23:10

не поняла вопроса.
а какое минимальное число m ты подберешь, чтобы:
1. m делилось на 3
2. m+1 делилось на 5?

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

...хотя по-хорошему надо рассмотреть варианты, что роботы на касты не смогут разбиться.

Автор: Michael_Rybak 21.11.2006 1:36

Они могут всегда разбиться, оставив нескольких роботов вне каст. Вопрос в том, как это сделать оптимально. Я считаю, что оставить его нерассмотреным и считать само собой разумеющимся - неправильно.

Автор: Master_Kirr 14.04.2007 11:55

Попробуй сперва поделить на 5, то что останется поделить на 3, затем сложить и к полученому прибавить то что останется после деления на три. Я проверял вроде сходится.

Автор: мисс_граффити 14.04.2007 12:24

Master_Kirr, ты это кому объясняешь? Думаешь, человек за полгода не сделал и не сдал?