이 문제를 해결하려면 정수에 f 와 g 라는 두 가지 함수를 구현해야 합니다. f f g 는 엄격하게 감소하는 함수 이고 g∘ f 는 엄격하게 증가하는 함수입니다. 즉, 어떤 두개의 정수를 취할 경우 <B A를 한 후, 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).일반적인 정수 오버플로 규칙이 적용됩니다. 솔루션은 기본적으로 모든 정수가 바인딩되지 않은 가상의 (또는 아마도 실제) 버전의 언어에서 임의로 큰 정수를 사용할 수 있어야하지만 구현으로 인해 프로그램이 실제로 실패하는 경우 큰 정수를 지원하지 않으면 솔루션이 무효화되지 않습니다.
이것은 code-golf 이므로 점수는 두 함수 의 바이트 수 와 가장 짧은 유효한 답변 의 합계입니다 .