Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 

Торт

(Время: 1 сек. Память: 16 Мб Сложность: 6%)

При решении данной задачи нужно заметить тот факт, что когда мы разрезаем торт на четное количество кусков, то делаем разрез по диагонали, а иначе - по радиусу. Таким образом, при четном количестве разрезов их число уменьшается вдвое. В нечетном случае, как правило, мы делаем столько разрезов, сколько кусков хотим получить: например, если нужно получить 7 кусков, то необходимо сделать 7 разрезов в то время, когда при четном числе кусков 8 достаточно сделать всего 4 разреза. Поэтому для определения числа разрезов торта на n кусков достаточно проверить четность n и в положительном случае вывести n/2, либо n в нечетном случае. Но, несмотря на свою простоту, задача имеет "подводный камень", который заключается в случае, когда n=1. Многие при этом выводят 1, но правильно выводить 0, т.к. для разрезания торта на 1 кусок резать его вовсе не обязательно, т.к. торт сам по себе уже без разрезаний является одним куском! Рассмотренный алгоритм может быть представлен следующим образом:

  read(n)
  if(n mod 2=1 and n>1) write(n); else write(n div 2)

[Обсуждение] [Все попытки] [Задача]


Красноярский краевой Дворец пионеров, (c)2006 - 2026, ИНН 246305493507, E-mail: admin@acmp.ru