Роботландия (2 уровень) |
Условие :Сообщество роботов живет по следующим законам: - один раз в начале года они объединяются в группы по три или пять роботов; - за год группа из 3 роботов собирает 5 новых, а группа из 5 роботов собирает 9 новых; - роботы собираются так, чтобы собрать за год наибольшее количество; - каждый робот живет три года после сборки. Известно начальное количество роботов К и все они только что собраны. Сколько роботов будет через N лет? Решение: Идея решения. Если роботов много, им выгоднее собираться по 5, потому что 3 пятерки соберут 27 роботов, а 5 троек только 25. Рассмотрим все случаи, когда количество роботов не делится на 5. - Количество роботов при делении на 5 дает остаток 3. Роботы собираются пятерками, а три “лишних” робота составляют одну тройку. - Количество роботов при делении на 5 дает остаток 1. Все роботы, кроме 6, собираются пятерками, а 6 “лишних” образуют 2 тройки ( 2 тройки соберут 10 роботов, а одна пятерка- 9). - Количество роботов при делении на 5 дает остаток 4. Все роботы, кроме 9, собираются пятерками, а 9 “лишних” образуюют 3 тройки (3 тройки соберут 15 роботов, а одна пятерка- 9). - Количество роботов при делении на 5 дает остаток 2. Все роботы, кроме 12, собираются пятерками, а 12 лишних образуют 4 тройки (4 тройки соберут 20 роботов, а 2 пятерки -18). Роботы собираются в группы так, чтобы максимальное их число было задействовано в процессе изготовления новых роботов. var else x:=(((s-5) div 5)*9)+10; 2: if s=2 then x:=0 else if s=7 then x:=10 else x:=(((s-10) div 5)*9)+20; 3 : x:=((s div 5)*9)+5; 4 : if s=4 then x:=5 else x:=(((s-5) div 5)*9)+15; end; {case} s3:=s2; {роботы “постарели” на год} s2:=s1; s1:=s0; s0:=x; {построили за последний год} end; writeln('Через ',n, ' лет будет ',s,' роботов'); end. |