Subfactorial या Rencontres संख्या ( A000166 ) भाज्य संख्या जो क्रमपरिवर्तन की साहचर्य में दिखाने के लिए इसी तरह की संख्या का एक अनुक्रम है। विशेष रूप से n वें सबफ़ैक्टीरियल ! N , n तत्वों के एक सेट के व्युत्पन्न की संख्या देता है । एक व्युत्पत्ति एक क्रमपरिवर्तन है जिसमें कोई भी तत्व समान स्थिति में नहीं रहता है। उपपरिवर्तन को निम्न पुनरावृत्ति संबंध के माध्यम से परिभाषित किया जा सकता है:
!n = (n-1) (!(n-1) + !(n-2))
वास्तव में, एक ही पुनरावृत्ति सम्बन्ध तथ्य के लिए होता है, लेकिन उपपरिवर्तन के लिए हम निम्न से शुरू करते हैं:
!0 = 1
!1 = 0
(वास्तव में हमारे पास, निश्चित रूप से, 1! = 1 ) होगा।
आपका काम गणना करना है ! N , n दिया ।
नियम
तथ्य की तरह, सबफैक्टेरियल बहुत जल्दी बढ़ता है। यह ठीक है यदि आपका प्रोग्राम केवल इनपुट n को ऐसे संभाल सकता है ! N को आपकी भाषा के मूल संख्या प्रकार द्वारा दर्शाया जा सकता है। हालांकि, आपके एल्गोरिथ्म को मनमाने ढंग से n के लिए सिद्धांत रूप में काम करना होगा । इसका मतलब है, आप मान सकते हैं कि अभिन्न परिणाम और मध्यवर्ती मूल्य आपकी भाषा द्वारा बिल्कुल प्रतिनिधित्व किया जा सकता है। ध्यान दें कि यह स्थिर ई को बाहर निकालता है अगर यह परिमित परिशुद्धता के साथ संग्रहीत या गणना की जाती है।
परिणाम एक सटीक पूर्णांक होना चाहिए (विशेष रूप से, आप वैज्ञानिक संकेतन के साथ परिणाम का अनुमान नहीं लगा सकते हैं)।
आप एक प्रोग्राम या फ़ंक्शन लिख सकते हैं और इनपुट प्राप्त करने और आउटपुट प्रदान करने के किसी भी मानक तरीके का उपयोग कर सकते हैं।
आप किसी भी प्रोग्रामिंग भाषा का उपयोग कर सकते हैं , लेकिन ध्यान दें कि इन खामियों को डिफ़ॉल्ट रूप से मना किया गया है।
यह कोड-गोल्फ है , इसलिए सबसे छोटा वैध उत्तर - बाइट्स में मापा जाता है - जीतता है।
परीक्षण के मामलों
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