सिदी बहुपद गुणांक के पूर्ण योग


28

पृष्ठभूमि

डिग्री n - या (n + 1) वें सिदी बहुपद के सिदी बहुपद को इस प्रकार परिभाषित किया गया है।

सिदी बहुपद की परिभाषा

सिदी बहुपद में कई दिलचस्प गुण हैं, लेकिन इसलिए उनके गुणांक हैं। बाद का रूप OEIS अनुक्रम A075513

कार्य

एक पूर्ण प्रोग्राम या एक फ़ंक्शन लिखें, जो एक गैर-नकारात्मक पूर्णांक n , प्रिंट देता है या डिग्री n के सिडी बहुपद के गुणांक के पूर्ण योग को लौटाता है , जो है

इच्छित आउटपुट की परिभाषा

ये रकम OEIS अनुक्रम A074932 बनाते हैं

यदि आप 1-आधारित अनुक्रमण पसंद करते हैं, तो आप इसके बजाय एक सकारात्मक पूर्णांक n ले सकते हैं और n वें सिदी बहुपद के गुणांक के पूर्ण योग की गणना कर सकते हैं ।

क्योंकि यह , आपको अपना कोड यथासंभव छोटा बनाना चाहिए। सभी मानक नियम लागू होते हैं।

परीक्षण के मामले (0-आधारित)

 n           Σ

 0           1
 1           3
 2          18
 3         170
 4        2200
 5       36232
 6      725200
 7    17095248
 8   463936896
 9 14246942336

परीक्षण के मामले (1-आधारित)

 n           Σ

 1           1
 2           3
 3          18
 4         170
 5        2200
 6       36232
 7      725200
 8    17095248
 9   463936896
10 14246942336

जवाबों:



46

पायथन 2 , 43 बाइट्स

f=lambda n,k=1:k/n or n*f(n,k+1)+k*f(n-1,k)

इसे ऑनलाइन आज़माएं!

एक अलग दृष्टिकोण

जब से मैंने इस चुनौती को पोस्ट किया है, मैंने इस समस्या के पुनरावर्ती समाधान के साथ आने की कोशिश की। जब मैं कलम और कागज के अलावा और कुछ भी उपयोग करने में विफल रहा, तो मैंने गोल्फ को एक व्यावहारिक समस्या में परिणत करने में कामयाबी हासिल की - कम से कम व्यावहारिक की कुछ परिभाषाओं के लिए - जिससे विश्लेषण करना आसान हो गया।

K + m उम्मीदवारों के साथ एक गेम शो की कल्पना करें जो निम्नानुसार काम करता है।

राउंड 1 में, सभी उम्मीदवारों को जितनी जल्दी हो सके एक निश्चित कार्य पूरा करना होगा। कश्मीर उम्मीदवारों उस कार्य को सबसे तेजी से पूरा जीतने 1 कश्मीर $ (एक kilodollar) दौर 3 करने के लिए प्रत्येक और अग्रिम।

दौर 2 में, मीटर शेष उम्मीदवारों अन्य शामिल होने के लिए एक दूसरा मौका मिलता है कश्मीर । प्रत्येक उम्मीदवार से एक प्रश्न पूछा जाता है। यदि वे प्रश्न का सही उत्तर देते हैं, तो वे 1 k $ जीतते हैं और 3 राउंड तक आगे बढ़ते हैं। हालाँकि, यदि वे प्रश्न का उत्तर देने में विफल रहते हैं, तो उन्हें खेल से हटा दिया जाता है। इसका मतलब है कि राउंड 3 में k और k + m उम्मीदवारों के बीच होगा, जो इस बात पर निर्भर करता है कि कितने लोग अपने सवालों के जवाब दे सकते हैं।

राउंड 3 में एम अधिक प्रतियोगिताएं शामिल हैं जो कि राउंड 1 के समान हैं। प्रत्येक प्रतियोगिता में, प्रतिभागियों को एक निश्चित कार्य पूरा करना होता है। राउंड 1 के विपरीत, केवल एक उम्मीदवार को पुरस्कार मिलता है, लेकिन सभी उम्मीदवारों को अगली प्रतियोगिता में भाग लेने के लिए मिलता है। प्रत्येक प्रतियोगिता इससे पहले की प्रतियोगिता से दोगुना भुगतान करती है; पहले एक भुगतान करता है 2 कश्मीर $ और पिछले एक 2 मीटर कश्मीर $

ध्यान दें कि चूंकि सभी पुरस्कार दो की शक्तियां हैं, यह जानते हुए कि एक उम्मीदवार ने कितनी पुरस्कार राशि अर्जित की है, हम जानते हैं कि क्या वे राउंड 3 में उन्नत हैं और राउंड 3 के कौन से मुकाबले जीते हैं।

मान लें कि गेम शो और दौर 1 पहले से ही खत्म हो गया है देख रहे हैं, तो आप जानते हैं जो कश्मीर उम्मीदवारों को पहले से ही दौर तक पहुँच चुके हैं 3 और जो मीटर उम्मीदवारों अभी भी दौर 2. में फंस रहे हैं कि कितने तरीकों से शेष पुरस्कार राशि वितरित किया जा सकता है?

एक बार जब हम यह जान लेते हैं कि दूसरे दौर के कौन से मी अभ्यर्थी राउंड 3 में आगे बढ़े हैं, तो इस विशिष्ट परिदृश्य के लिए संभावित परिणामों की गणना करना आसान है। यदि j उम्मीदवार आगे बढ़ते हैं, तो राउंड 3 में k + j कुल उम्मीदवार हैं, और इस प्रकार प्रत्येक प्रतियोगिता के लिए k + j संभावित परिणाम हैं। राउंड 3 में मी व्यक्तिगत प्रतियोगिताओं के साथ , यह सभी मी प्रतियोगिताओं के लिए (k + j) मी परिणाम बनाता है ।

अब j , 0 और m के बीच कोई भी मान ले सकता है , जिसके आधार पर उम्मीदवार राउंड में सही उत्तर देते हैं। 2. j के प्रत्येक फिक्स वैल्यू के लिए , j उम्मीदवारों के लिए m C j भिन्न संयोजन हैं जो राउंड के लिए उन्नत हो सकते हैं। 3. यदि हम कॉल करते हैं के लिए संभावित परिणामों की कुल संख्या कश्मीर 3 उम्मीदवारों दौर और मीटर दौर 2 उम्मीदवारों जी (एम, कश्मीर) , हम निम्न सूत्र मिलता है।

जी के लिए सूत्र

यदि हम k = 1 को ठीक करते हैं, तो हमें निम्नलिखित विशेष मामले मिलते हैं, जो मूल समस्या को हल करने के लिए हमारे नए दृष्टिकोण का गठन करते हैं।

सिग्मा और जी के बीच संबंध

एक पुनरावर्ती सूत्र

अब, मान लें कि आप 1 राउंड के बाद विज्ञापनों के दौरान सो गए थे, और केवल समय में जागकर यह देखने के लिए कि राउंड 3 की आखिरी प्रतियोगिता किसने जीती और इस तरह 2 मीटर k $ का भव्य पुरस्कार मिला । आपके पास कोई अन्य जानकारी नहीं है, भले ही उम्मीदवार को कुल कितनी पुरस्कार राशि मिली हो। शेष पुरस्कार राशि को कितने तरीकों से वितरित किया जा सकता है?

यदि विजेता राउंड 2 के मी उम्मीदवारों में से एक था , तो हम पहले से ही अब वे राउंड 3 में आगे बढ़ चुके हैं । इस प्रकार, हमारे पास राउंड 3 में प्रभावी रूप से k + 1 अभ्यर्थी हैं, लेकिन राउंड में केवल m - 1 अभ्यर्थी हैं। चूंकि हम अंतिम प्रतियोगिता के विजेता को जानते हैं, इसलिए केवल m - 1 कॉन्टेस्ट अनिश्चित परिणामों के साथ हैं, इसलिए g (m) हैं - 1, के + 1) संभावित परिणाम।

यदि विजेता राउंड 2 को छोड़ देने वाले k उम्मीदवारों में से एक है , तो गणना थोड़ी पेचीदा हो जाती है। पहले के रूप में, वहाँ केवल हैं मीटर - 1 राउंड छोड़ दिया है, लेकिन अब हम अभी भी है कश्मीर दौर 3 और उम्मीदवारों मीटर दौर 2 में उम्मीदवारों दौर 2 उम्मीदवारों की संख्या और दौर 3 प्रतियोगिताओं की संख्या के बाद से कर रहे हैं अलग, संभावित परिणामों नहीं कर सकते जी के एक साधारण आह्वान के साथ गणना की जाएगी । हालाँकि, पहले राउंड के बाद 2 उम्मीदवार ने उत्तर दिया है - सही या गलत - राउंड 2 उम्मीदवारों की संख्या एक बार फिर मी - 1 राउंड 3 प्रतियोगिता से मेल खाती है । यदि उम्मीदवार आगे बढ़ते हैं, तो k + 1 राउंड 3 उम्मीदवार होते हैं और इस प्रकार g (m - 1, k + 1)संभावित नतीजे; यदि उम्मीदवार को हटा दिया जाता है, तो राउंड 3 उम्मीदवारों की संख्या k पर बनी रहती है और जी (m - 1, k) संभावित परिणाम होते हैं। चूंकि उम्मीदवार या तो अग्रिम या नहीं, वहाँ जी (एम - 1, के + 1) + जी (एम - 1, के) इन दो मामलों के संयोजन के संभावित परिणाम हैं।

अब, यदि हम सभी k + m उम्मीदवारों के लिए संभावित परिणाम जोड़ते हैं जो भव्य पुरस्कार जीत सकते थे, तो परिणाम जी (m, k) से मेल खाना चाहिए । कर रहे हैं मीटर दौर है कि करने के लिए नेतृत्व 2 प्रतियोगियों जी (एम - 1, k + 1) संभावित प्रत्येक परिणामों, और k दौर 3 प्रतियोगियों कि करने के लिए नेतृत्व ग्राम (मीटर - 1, k + 1) + g (एम - 1, ट) लोगों को। संक्षेप में, हमें निम्नलिखित पहचान मिलती है।

जी के लिए पुनरावर्ती सूत्र

साथ में बेस केस

बेस केस जी

ये दो सूत्र पूरी तरह से फ़ंक्शन जी को चिह्नित करते हैं ।

एक गोल्फ कार्यान्वयन

जबकि

g=lambda m,k=1:0**m or(m+k)*g(m-1,k+1)+k*g(m-1,k)

(49 बाइट्स, 10**m पैदावार एक बार मी 0 पर गिरता है ) या भी

g=lambda m,k=1:m<1 or(m+k)*g(m-1,k+1)+k*g(m-1,k)

(48 बाइट्स, रिटर्न 1 के बजाय ट्रू ) वैध समाधान होगा, अभी भी बाइट्स बचाए जाने हैं।

यदि हम एक फंक्शन एफ को परिभाषित करते हैं जो पहले तर्क के रूप में 2 उम्मीदवारों की संख्या मी के बजाय राउंड 1 उम्मीदवारों की संख्या n लेता है, अर्थात

g के संदर्भ में f की परिभाषा

हमें पुनरावर्ती सूत्र मिलता है

च के लिए पुनरावर्ती सूत्र

बेस केस के साथ

च के लिए बेस केस

अंत में, हमारे पास है

सिग्मा और एफ के बीच संबंध

इसलिए पायथन कार्यान्वयन

f=lambda n,k=1:k/n or n*f(n,k+1)+k*f(n-1,k)

( k/nपैदावार 1 बार n = k ) 1-आधारित अनुक्रमण के साथ कार्य को हल करता है।




3

MATL , 12 बाइट्स

t:XnG:QG^*sQ

इनपुट 0-आधारित है।

इसे ऑनलाइन आज़माएं!

व्याख्या

5उदाहरण के रूप में इनपुट पर विचार करें ।

t      % Take n implicitly. Duplicate
       % STACK: 5, 5
:      % Range [1 2 ...n]
       % STACK: 5, [1 2 3 4 5]
Xn     % N-choose-k, vectorized
       % STACK: [5 10 10 5 1]
G:Q    % Push [2 3 ... n+1]
       % STACK: [5 10 10 5 1], [2 3 4 5 6]
G^     % Raise to n
       % STACK: [5 10 10 5 1], [32 243 1024 3125 7776]
*      % Multiply, element-wise
       % STACK: [160 2430 10240 15625 7776]
s      % Sum of array
       % STACK: 36231
Q      % Add 1. Display implicitly
       % STACK: 36232

2

आर, 36 बाइट्स

sum(choose(n<-scan(),0:n)*(0:n+1)^n)

सूत्र को लागू करते समय आर का वैश्वीकरण यहां काम आता है।


2

जे , 19 बाइट्स

+/@((!{:)*>:^{:)@i.

एक-आधारित अनुक्रमण का उपयोग करता है।

इसे ऑनलाइन आज़माएं!

व्याख्या

+/@((!{:)*>:^{:)@i.  Input: integer n
                 i.  Range [0, 1, ..., n-1]
   (           )@    Operate on that range
             {:        Get the last value, n-1
          >:           Increment, range becomes [1, 2, ..., n]
            ^          Exponentiate. [1^(n-1), 2^(n-1), ..., n^(n-1)]
    ( {:)              Get the last value, n-1
     !                 Binomial coefficient. [C(n-1, 0), C(n-1, 1), ..., C(n-1, n-1)]
         *             Multiply
+/@                  Reduce by addition



0

Axiom, 39 बाइट्स

f(n)==sum(binomial(n,i)*(i+1)^n,i=0..n)

परीक्षण कोड और परिणाम

(35) -> [[i,f(i)] for i in 0..9]
   (35)
   [[0,1], [1,3], [2,18], [3,170], [4,2200], [5,36232], [6,725200],
    [7,17095248], [8,463936896], [9,14246942336]]

0

जेली , 9 बाइट्स

cR×R‘*ƊS‘

इसे ऑनलाइन आज़माएं!

यह काम किस प्रकार करता है

cR×R‘*ƊS‘ - Main link. Argument: n (integer)        e.g.   5
 R        - Range from 1 to n                              [1, 2, 3, 4, 5]
c         - Binomial coefficient                           [5, 10, 10, 5, 1]
      Ɗ   - Last three links as a monad:
   R      -   Link 1: Range from 1 to n                    [1, 2, 3, 4, 5]
    ‘     -   Link 2: Increment                            [2, 3, 4, 5, 6]
     *    -   Link 3: To the power of n                    [32, 243, 1024, 3125, 7776]
  ×       - Multiply, pairwise                             [160, 2430, 10240, 15625, 7776]
       S  - Sum                                            36231
        ‘ - Increment                                      36232
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.