Các subfactorial hoặc số rencontres ( A000166 ) là một chuỗi các con số tương tự như những con số thừa mà hiển thị trong tổ hợp hoán vị. Đặc biệt là n thứ subfactorial ! N cho biết số Loạn một tập hợp các n yếu tố. Một sự loạn trí là một hoán vị trong đó không có phần tử nào ở cùng một vị trí. Các cấu trúc con có thể được xác định thông qua quan hệ lặp lại sau đây:
!n = (n-1) (!(n-1) + !(n-2))
Trong thực tế, mối quan hệ lặp lại tương tự giữ cho giai thừa, nhưng đối với các cấu trúc con chúng ta bắt đầu từ:
!0 = 1
!1 = 0
(Tất nhiên, đối với giai thừa chúng ta sẽ có, 1! = 1. )
Nhiệm vụ của bạn là tính toán ! N , cho n .
Quy tắc
Giống như giai thừa, tiểu phần phát triển rất nhanh. Nó là tốt nếu chương trình của bạn chỉ có thể xử lý đầu vào n như vậy ! N có thể được biểu diễn theo loại số tự nhiên của ngôn ngữ của bạn. Tuy nhiên, về mặt lý thuyết , thuật toán của bạn phải hoạt động cho n tùy ý . Điều đó có nghĩa là, bạn có thể cho rằng kết quả tích hợp và giá trị trung gian có thể được biểu thị chính xác bằng ngôn ngữ của bạn. Lưu ý rằng điều này loại trừ hằng số e nếu nó được lưu trữ hoặc tính toán với độ chính xác hữu hạn.
Kết quả cần phải là một số nguyên chính xác (cụ thể, bạn không thể tính gần đúng kết quả bằng ký hiệu khoa học).
Bạn có thể viết một chương trình hoặc một chức năng và sử dụng bất kỳ phương pháp tiêu chuẩn nào để nhận đầu vào và cung cấp đầu ra.
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 câu trả lời hợp lệ ngắn nhất - được đo bằng byte - thắng.
Các trường hợp thử nghiệm
n !n
0 1
1 0
2 1
3 2
4 9
5 44
6 265
10 1334961
12 176214841
13 2290792932
14 32071101049
20 895014631192902121
21 18795307255050944540
100 34332795984163804765195977526776142032365783805375784983543400282685180793327632432791396429850988990237345920155783984828001486412574060553756854137069878601