Для этой задачи вам нужно реализовать две функции, f и g , на целых числах, так что f ∘ g - строго убывающая функция, а g ∘ f - строго возрастающая функция. Другими словами, если вы берете любые два целых числа a <b , то f (g (a))> f (g (b)) и g (f (a)) <g (f (b)) . Не существует никаких ограничений для f и g в отдельности, за исключением того, что каждый из них должен отображать одно целое число в другое целое число.
Пожалуйста, включите краткое описание f и g и аргумент, почему у них есть обязательное свойство.
Предоставлено: Эта задача была вызвана проблемой в Румынском конкурсе магистров математики 2011 года (который запрашивает то же самое, но не с целыми числами, а с действительными числами). Если вы действительно хотите спойлеры, теперь вы знаете, что искать.
правила
Слово «функция» в этой задаче следует понимать в математическом смысле отображения одного целого числа на другое: вы можете написать две программы или две функции и использовать любой из стандартных методов получения ввода и вывода, как обычно. Вы можете использовать строковые представления целых чисел вместо фактических целочисленных переменных, но типы ввода и вывода должны быть идентичными, чтобы можно было составлять функции без ручного преобразования типов между ними. Помните, что концептуально, f и g все еще должны быть функциями на ℤ, поэтому вы не можете обмануть, используя два разных строковых представления одного и того же числа или что-то в этом роде.
Помните, что функции могут быть безымянными , если их имя не требуется само по себе или другой функции, которую вы определяете. Если вы назовете одну или обе функции, вы можете предположить, что они существуют в одной и той же программе, так что они могут ссылаться друг на друга в своей реализации (например,
def f(x): return -g(x)
в Python).Применяются обычные правила целочисленного переполнения: ваше решение должно быть в состоянии работать с произвольно большими целыми числами в гипотетической (или, возможно, реальной) версии вашего языка, в которой все целые числа не ограничены по умолчанию, но если ваша программа на практике дает сбой из-за реализации не поддерживает такие большие целые числа, что не делает решение недействительным.
Вы можете использовать любой язык программирования , но учтите, что эти лазейки по умолчанию запрещены.
Это код-гольф , поэтому ваш результат представляет собой сумму количества байтов обеих функций и кратчайшего действительного ответа.