На свой день рождения Петя купил красивый и вкусный торт, который имел идеально круглую форму. Петя не знал, сколько гостей придет на его день рождения, поэтому вынужден был разработать алгоритм, согласно которому он сможет быстро разрезать торт на [latex]N[/latex] равных частей. Следует учесть, что разрезы торта можно производить как по радиусу, так и по диаметру.
Помогите Пете решить эту задачу, определив наименьшее число разрезов торта по заданному числу гостей.
Задача взята с сайта e-olymp.
Входные данные
Входной файл содержит натуральное число [latex]N[/latex] – число гостей, включая самого виновника торжества ([latex]N \leq 1000[/latex]).
Выходные данные
Выведите минимально возможное число разрезов торта.
Тесты
Число гостей | Минимальное количество рaзрезов |
---|---|
1 | 0 |
8 | 4 |
13 | 13 |
Алгоритм
В данной задаче достаточно заметить следующее:
- В случае четного количества гостей необходимо сделать [latex]\frac{N}{2}[/latex] разрезов по диаметру торта.
- В случае нечетного количества гостей необходимо сделать [latex]N[/latex] разрезов по радиусу торта.
- В случае если гостей 1 то выведем 0 т.к. торт резать не нужно.
Код с использованием ветвления:
1 2 3 4 5 6 7 8 9 |
#include <iostream> using namespace std; int main() { int N; cin >> N; cout << ((N % 2 == 0) || (N == 1)? N/2 : N); return 0; } |
Код без использования ветвления:
1 2 3 4 5 6 7 8 9 10 |
#include <iostream> using namespace std; int main() { int N; cin >> N; (N % 2 == 0 || N == 1) && (cout << N/2); !(N % 2 == 0 || N == 1) && (cout << N); return 0; } |
Я работу засчитал, но меняя смущает, что в условии $N$, а в решении $n.$ Придумайте что-нибудь.