Đối với thử thách này, bạn cần thực hiện hai hàm, f và g , trên các số nguyên, sao cho f ∘ g là hàm giảm nghiêm ngặt trong khi g f là hàm tăng nghiêm ngặt. Nói cách khác, nếu bạn lấy bất kỳ hai số nguyên a <b , thì f (g (a))> f (g (b)) và g (f (a)) <g (f (b)) . Không có giới hạn đối với f và g riêng lẻ, ngoại trừ việc chúng phải ánh xạ một số nguyên sang một số nguyên khác.
Vui lòng bao gồm một mô tả ngắn về f và g và một đối số cho lý do tại sao họ có tài sản cần thiết.
Tín dụng: Thử thách này được lấy cảm hứng từ một vấn đề trong cuộc thi Thạc sĩ Toán học Rumani năm 2011 (yêu cầu điều tương tự nhưng về số thực, thay vì số nguyên). Nếu bạn thực sự muốn spoilers, bây giờ bạn biết những gì để tìm kiếm.
Quy tắc
Từ "hàm" trong thử thách này nên được hiểu theo nghĩa toán học là ánh xạ một số nguyên này sang một số nguyên khác: bạn có thể viết hai chương trình hoặc hai hàm và sử dụng bất kỳ phương thức tiêu chuẩn nào để nhận đầu vào và cung cấp đầu ra, như thường lệ. Bạn có thể sử dụng biểu diễn chuỗi số nguyên thay vì biến số nguyên thực tế, nhưng các loại đầu vào và đầu ra phải giống hệt nhau, để các hàm có thể được tạo mà không cần chuyển đổi các loại thủ công ở giữa. Hãy nhớ rằng về mặt khái niệm, f và g vẫn cần phải là các hàm trên, vì vậy bạn không thể gian lận bằng cách sử dụng hai biểu diễn chuỗi khác nhau của cùng một số hoặc bất cứ thứ gì tương tự.
Hãy nhớ rằng các chức năng có thể không được đặt tên , miễn là tên của chúng không cần thiết bởi chính nó hoặc chức năng khác mà bạn xác định. Nếu bạn đặt tên cho một hoặc cả hai hàm, bạn có thể cho rằng chúng tồn tại trong cùng một chương trình, để chúng có thể tham chiếu lẫn nhau trong quá trình thực hiện (ví dụ như
def f(x): return -g(x)
trong Python).Áp dụng quy tắc tràn số nguyên thông thường: giải pháp của bạn phải có thể hoạt động cho các số nguyên lớn tùy ý trong phiên bản giả định (hoặc có thể có thật) của ngôn ngữ của bạn trong đó tất cả các số nguyên không bị ràng buộc theo mặc định, nhưng nếu chương trình của bạn không thực hiện do thực hiện do thực hiện không hỗ trợ số nguyên lớn, điều đó không làm mất hiệu lực giải pháp.
Bạn có thể sử dụng bất kỳ ngôn ngữ lập trình nào , nhưng lưu ý rằng các lỗ hổng này bị cấm theo mặc định.
Đây là môn đánh gôn , vì vậy điểm của bạn là tổng số byte của cả hai hàm và câu trả lời hợp lệ ngắn nhất sẽ thắng.