|
Торт
(Время: 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)
| |