ผลรวมสัมบูรณ์ของสัมประสิทธิ์พหุนาม Sidi


28

พื้นหลัง

พหุนามนายปริญญาn - หรือ(n + 1) TH Sidi พหุนาม - กำหนดดังนี้

ความหมายของคำพหุนาม Sidi

พหุนาม Sidi มีคุณสมบัติที่น่าสนใจหลายประการ แต่มีค่าสัมประสิทธิ์ รูปแบบหลัง OEIS ลำดับA075513

งาน

เขียนโปรแกรมเต็มรูปแบบหรือฟังก์ชั่นที่กำหนดจำนวนเต็มn ที่ไม่เป็นลบพิมพ์หรือส่งกลับผลรวมสัมบูรณ์ของสัมประสิทธิ์ของ Sidi พหุนามขององศาnนั่นคือ

ความหมายของผลลัพธ์ที่ตั้งใจไว้

จำนวนเงินเหล่านี้ในรูปแบบ OEIS ลำดับA074932

หากคุณต้องการจัดทำดัชนี 1 ตามที่คุณสามารถใช้เป็นจำนวนเต็มบวกnแทนและคำนวณผลรวมที่แน่นอนของค่าสัมประสิทธิ์ของn TH Sidi พหุนาม

เนื่องจากนี่คือคุณต้องทำให้รหัสของคุณสั้นที่สุด ใช้กฎมาตรฐานทั้งหมด

กรณีทดสอบ (ตาม 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

Python 2 , 43 ไบต์

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

ลองออนไลน์!

แนวทางที่แตกต่าง

นับตั้งแต่ฉันโพสต์ความท้าทายนี้ฉันพยายามหาวิธีแก้ปัญหาแบบเรียกซ้ำสำหรับปัญหานี้ ในขณะที่ฉันไม่ได้ใช้อะไรมากไปกว่าปากกาและกระดาษฉันก็สามารถเปลี่ยนสูตรการเล่นกอล์ฟให้กลายเป็นปัญหาเชิงปฏิบัติได้ - อย่างน้อยก็สำหรับคำจำกัดความทางปฏิบัติบางอย่าง - ซึ่งทำให้การวิเคราะห์ง่ายขึ้น

ลองนึกภาพเกมโชว์ที่มีผู้สมัครk + mที่ทำงานดังนี้

ในรอบที่ 1 ผู้สมัครทุกคนจะต้องทำภารกิจให้สำเร็จให้เร็วที่สุดเท่าที่จะทำได้ kสมัครที่ทํางานที่เร็วที่สุดชนะ1 k $ (หนึ่ง kilodollar) แต่ละและล่วงหน้าไปรอบ 3

ในรอบ 2, ม.ที่เหลือผู้สมัครที่ได้รับโอกาสครั้งที่สองที่จะเข้าร่วมอื่น ๆk ผู้สมัครแต่ละคนจะถูกถามคำถาม หากพวกเขาตอบคำถามได้อย่างถูกต้องพวกเขาชนะ1 k $และเลื่อนไปที่รอบที่ 3 อย่างไรก็ตามหากพวกเขาไม่ตอบคำถามพวกเขาจะถูกคัดออกจากเกม ซึ่งหมายความว่ารอบที่ 3 จะมีผู้สมัครระหว่างkและk + mขึ้นอยู่กับจำนวนที่สามารถตอบคำถามได้

รอบที่ 3 ประกอบด้วยม.การแข่งขันมากขึ้นว่ามีความคล้ายคลึงกับรอบที่ 1 ในการประกวดในแต่ละผู้เข้าร่วมจะต้องบรรลุงานบางอย่าง ต่างจากรอบที่ 1 ผู้สมัครเพียงคนเดียวเท่านั้นที่ได้รับรางวัล แต่ผู้สมัครทุกคนจะได้เข้าร่วมในการแข่งขันครั้งต่อไป การแข่งขันแต่ละครั้งจะจ่ายเงินมากเป็นสองเท่าของการแข่งขันก่อนหน้านั้น คนแรกที่จ่าย2 k $และสุดท้าย2 เมตร k $

โปรดทราบว่าเนื่องจากรางวัลทั้งหมดเป็นพลังของทั้งสองการรู้จำนวนเงินรางวัลที่ผู้สมัครได้รับหมายความว่าเรารู้ว่าพวกเขาก้าวเข้าสู่รอบที่ 3 และการแข่งขันรอบที่ 3 ที่พวกเขาชนะ

สมมติว่าคุณกำลังดูรายการเกมและรอบที่ 1 สิ้นสุดลงแล้วดังนั้นคุณจึงรู้ว่าผู้สมัครkคนใดถึงรอบที่ 3 และm แล้วผู้สมัครจะยังคงติดอยู่ในรอบที่ 2 ในหลายวิธีที่สามารถเงินรางวัลที่เหลือจะกระจาย?

เมื่อเราทราบว่าของรอบที่สองของม.ผู้สมัครที่ได้ก้าวเข้าสู่รอบ 3 มันเป็นเรื่องง่ายในการคำนวณผลลัพธ์ที่เป็นไปในสถานการณ์นี้โดยเฉพาะ หากผู้สมัครjล่วงหน้ามีk + jรวมผู้สมัครในรอบ 3 และทำให้k + jผลลัพธ์ที่เป็นไปได้สำหรับการแข่งขันแต่ละครั้ง ด้วยการแข่งขันmบุคคลในรอบที่ 3 นี่ทำให้ผลลัพธ์(k + j) mสำหรับการแข่งขันmทั้งหมด

ตอนนี้jสามารถรับค่าใด ๆ ระหว่าง0และmขึ้นอยู่กับผู้สมัครที่ตอบถูกต้องในรอบที่ 2 สำหรับแต่ละค่าการแก้ไขของjมีm C jรวมกันที่แตกต่างกันของผู้สมัครjที่อาจมีขั้นสูงถึงรอบ 3 ถ้าเราเรียก จำนวนรวมของผลลัพธ์ที่เป็นไปได้สำหรับผู้สมัครkรอบ 3 และผู้สมัครmรอบ 2 ผู้สมัครg (m, k)เราได้รับสูตรต่อไปนี้

สูตรสำหรับ g

หากเราแก้ไขk = 1เราจะได้รับกรณีพิเศษต่อไปนี้ซึ่งถือเป็นแนวทางใหม่ของเราในการแก้ปัญหาเดิม

ความสัมพันธ์ระหว่างซิกมาและกรัม

สูตรเรียกซ้ำ

ทีนี้สมมติว่าคุณหลับไประหว่างการโฆษณาหลังจากรอบที่ 1 และตื่นขึ้นมาทันเวลาเพื่อดูว่าใครชนะการแข่งขันรอบสุดท้าย 3 และทำให้รางวัลใหญ่2 m k $ $ คุณไม่มีข้อมูลอื่นใดแม้แต่เงินรางวัลที่ผู้สมัครได้รับรวมทั้งหมด เงินรางวัลที่เหลือสามารถกระจายได้กี่วิธี?

หากผู้ชนะคือหนึ่งในผู้สมัครmในรอบที่ 2 ตอนนี้พวกเราต้องก้าวเข้าสู่รอบที่3แล้ว ดังนั้นเราจึงมีผู้สมัครk + 1 ได้ในรอบที่ 3 แต่มีเพียงm - 1ผู้สมัครในรอบที่ 2 เนื่องจากเรารู้ว่าผู้ชนะการประกวดครั้งล่าสุดมีเพียงการประกวดm - 1 ที่มีผลลัพธ์ที่ไม่แน่นอนดังนั้นจึงมีg (m - 1, k + 1)ผลลัพธ์ที่เป็นไปได้

หากผู้ชนะคือหนึ่งในผู้สมัครkที่ข้ามรอบที่ 2 การคำนวณจะค่อนข้างยุ่งยาก เมื่อก่อนมีเหลือเพียงm - 1รอบ แต่ตอนนี้เรายังมีผู้สมัครkในรอบที่ 3 และmผู้สมัครในรอบที่ 2 เนื่องจากจำนวนผู้สมัครรอบที่ 2 และจำนวนการแข่งขันรอบที่ 3 แตกต่างกันผลลัพธ์ที่เป็นไปได้ไม่สามารถ ได้รับการคำนวณด้วยการภาวนาที่เรียบง่ายของกรัม อย่างไรก็ตามหลังจากที่ผู้สมัครรอบ 2 ได้ตอบ - ถูกหรือผิด - จำนวนผู้สมัครรอบที่ 2 จะตรงกับการแข่งขันm - 1รอบ 3 อีกครั้ง หากผู้สมัครก้าวหน้ามีk + 1รอบ 3 ผู้สมัครและทำให้g (m - 1, k + 1)ผลลัพธ์ที่เป็นไปได้ หากผู้สมัครถูกคัดออกจำนวนผู้สมัครรอบที่ 3 จะยังคงอยู่ที่kและมีผลลัพธ์ที่เป็นไปได้g (m - 1, k) เนื่องจากผู้สมัครมีความก้าวหน้าหรือไม่มีg (m - 1, k + 1) + g (m - 1, k)ผลลัพธ์ที่เป็นไปได้รวมสองกรณีนี้

ตอนนี้ถ้าเราเพิ่มผลลัพธ์ที่อาจเกิดสำหรับทุกk + mผู้สมัครที่จะได้รับรางวัลชนะเลิศผลจะต้องตรงกับกรัม (m, k) มีผู้เข้าแข่งขันรอบm 2 ซึ่งนำไปสู่g (m - 1, k + 1)ผลลัพธ์ที่เป็นไปได้แต่ละรายการและkผู้แข่งขันรอบที่ 3 ที่นำไปสู่g (m - 1, k + 1) + g (m - 1, k)คน สรุปแล้วเราได้รับตัวตนดังต่อไปนี้

สูตรเรียกซ้ำสำหรับ g

ประกอบกับตัวเรือนฐาน

เคสฐานสำหรับ g

สูตรทั้งสองนี้แสดงลักษณะของฟังก์ชั่นgอย่างสมบูรณ์

การติดตั้งแบบกอล์ฟ

ในขณะที่

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

(49 ไบต์ให้0**mผลผลิต1เมื่อmลดลงถึง0 ) หรือแม้กระทั่ง

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

(48 ไบต์ส่งคืนTrueแทน1 ) จะเป็นโซลูชันที่ถูกต้องยังคงมีจำนวนไบต์ที่จะบันทึก

หากเรากำหนดฟังก์ชันfที่ใช้จำนวนnของผู้สมัครรอบที่ 1 แทนจำนวนที่mของผู้สมัครรอบที่ 2 เป็นอาร์กิวเมนต์แรกเช่น

นิยามของ f ในรูปของ g

เราได้สูตรแบบเรียกซ้ำ

สูตรแบบเรียกซ้ำสำหรับ f

กับกรณีฐาน

กรณีฐานสำหรับฉ

ในที่สุดเราก็มี

ความสัมพันธ์ระหว่างซิกมาและเอฟ

ดังนั้นการใช้ Python

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

( k/nให้ผลตอบแทน1ครั้งn = k ) แก้ไขงานที่ทำด้วยการทำดัชนีแบบ 1


8

Mathematica, 33 32 ไบต์

ที่บันทึกไว้หนึ่งขอบคุณไบต์จองฮวานมิน

Binomial[#,r=0~Range~#].(r+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

R, 36 ไบต์

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

vectorization ของ R มีประโยชน์เมื่อใช้สูตรนี้


2

J , 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

ความจริง 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.