Tổng tuyệt đối của hệ số đa thức Sidi


28

Lý lịch

Các Sidi đa thức bậc n - hoặc (n + 1) lần thứ Sidi đa thức - được định nghĩa như sau.

định nghĩa về đa thức Sidi

Các đa thức Sidi có một số tính chất thú vị, nhưng hệ số của chúng cũng vậy. Dạng sau OEIS trình tự A075513 .

Bài tập

Viết chương trình đầy đủ hoặc hàm, cho số nguyên n không âm , in hoặc trả về tổng tuyệt đối của các hệ số của đa thức Sidi bậc n , nghĩa là

định nghĩa của đầu ra dự định

Các khoản tiền này tạo thành chuỗi OEIS A074932 .

Nếu bạn thích lập chỉ mục dựa trên 1, bạn có thể lấy số nguyên dương n thay vào đó và tính tổng tuyệt đối của các hệ số của đa thức Sidi thứ n .

Bởi vì đây là , bạn phải làm cho mã của mình càng ngắn càng tốt. Tất cả các quy tắc tiêu chuẩn được áp dụng.

Các trường hợp thử nghiệm (dựa trên 0)

 n           Σ

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

Các trường hợp thử nghiệm (dựa trên 1)

 n           Σ

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

Câu trả lời:



46

Python 2 , 43 byte

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

Hãy thử trực tuyến!

Một cách tiếp cận khác

Kể từ khi tôi đăng thử thách này, tôi đã cố gắng đưa ra một giải pháp đệ quy cho vấn đề này. Trong khi tôi thất bại trong việc sử dụng không gì khác ngoài bút và giấy, tôi đã xoay sở để biến công thức thành golf thành một vấn đề thực tế - ít nhất là đối với một số định nghĩa thực tế - giúp cho việc phân tích dễ dàng hơn.

Hãy tưởng tượng một game show với các ứng cử viên k + m hoạt động như sau.

Ở vòng 1, tất cả các ứng viên phải hoàn thành một nhiệm vụ nhất định nhanh nhất có thể. Các ứng cử viên k hoàn thành nhiệm vụ nhanh nhất giành được 1 k $ (một kilodollar) và tiến vào vòng 3.

Trong vòng 2, m ứng cử viên còn lại có được một cơ hội thứ hai để tham gia khác k . Mỗi ứng viên được hỏi một câu hỏi. Nếu họ trả lời đúng câu hỏi, họ thắng 1 k $ và tiến vào vòng 3. Tuy nhiên, nếu họ không trả lời được câu hỏi, họ sẽ bị loại khỏi trò chơi. Điều này có nghĩa là vòng 3 sẽ có giữa các ứng cử viên kk + m , tùy thuộc vào số lượng người có thể trả lời câu hỏi của họ.

Vòng 3 bao gồm m nhiều cuộc thi tương tự như vòng 1. Trong mỗi cuộc thi, người tham gia phải hoàn thành một nhiệm vụ nhất định. Không giống như vòng 1, chỉ có một thí sinh nhận được giải thưởng, nhưng tất cả các thí sinh đều được tham gia cuộc thi tiếp theo. Mỗi cuộc thi trả gấp đôi so với cuộc thi trước đó; người đầu tiên trả 2 k $ và người cuối cùng 2 m k $ .

Lưu ý rằng vì tất cả các giải thưởng là sức mạnh của hai người, nên biết một ứng cử viên kiếm được bao nhiêu tiền có nghĩa là chúng tôi biết nếu họ tiến vào vòng 3 và cuộc thi nào của vòng 3 họ đã giành chiến thắng.

Giả sử bạn đang xem các chương trình trò chơi và vòng 1 đã kết thúc, để bạn biết mà k ứng viên đã đạt vòng 3 và đó m thí sinh vẫn mắc kẹt trong vòng 2. Có bao nhiêu cách tiền thưởng còn lại có thể được phân phối?

Một khi chúng ta biết được của vòng thứ hai của m thí sinh đã lọt vào vòng 3, thật dễ dàng để tính toán các kết quả có thể cho kịch bản cụ thể này. Nếu ứng viên j tiến lên, có tổng số k + j ứng viên vào vòng 3, và do đó k + j có thể đạt được kết quả cho mỗi cuộc thi. Với m cuộc thi cá nhân ở vòng 3, điều này tạo ra (k + j) m kết quả cho tất cả các cuộc thi m .

Bây giờ, j có thể nhận bất kỳ giá trị nào trong khoảng từ 0 đến m , tùy thuộc vào ứng cử viên nào trả lời đúng trong vòng 2. Với mỗi giá trị sửa lỗi của j , có m C j kết hợp khác nhau của các ứng cử viên j có thể tiến đến vòng 3. Nếu chúng tôi gọi tổng số kết quả có thể có đối với k thí sinh vòng 3 và m vòng 2 thí sinh g (m, k) , chúng ta có được công thức sau.

công thức cho g

Nếu chúng tôi sửa k = 1 , chúng tôi sẽ nhận được trường hợp đặc biệt sau, cấu thành cách tiếp cận mới của chúng tôi để giải quyết vấn đề ban đầu.

mối quan hệ giữa Sigma và g

Một công thức đệ quy

Bây giờ, giả sử rằng bạn đã ngủ thiếp đi trong các quảng cáo sau vòng 1, và thức dậy đúng lúc để xem ai là người chiến thắng trong cuộc thi cuối cùng của vòng 3 và do đó giải thưởng lớn là 2 m k $ . Bạn không có bất kỳ thông tin nào khác, thậm chí tổng số tiền mà thí sinh đó đã giành được. Có bao nhiêu cách giải thưởng tiền còn lại có thể được phân phối?

Nếu người chiến thắng là một trong những m thí sinh của vòng 2, chúng ta đã bây giờ mà họ phải tiến đến vòng 3 . Do đó, chúng tôi thực sự có k + 1 thí sinh ở vòng 3, nhưng chỉ có m - 1 thí sinh ở vòng 2. Vì chúng tôi biết người chiến thắng trong cuộc thi cuối cùng, chỉ có m - 1 cuộc thi có kết quả không chắc chắn, nên có g (m - 1, k + 1) kết quả có thể xảy ra.

Nếu người chiến thắng là một trong những ứng cử viên k bỏ qua vòng 2, phép tính trở nên khó khăn hơn một chút. Như trước đây, chỉ còn lại m - 1 vòng, nhưng hiện tại chúng tôi vẫn có k thí sinh ở vòng 3 và m thí sinh ở vòng 2. Vì số thí sinh vòng 2 và số vòng thi 3 khác nhau, kết quả có thể xảy ra được tính toán với một lời gọi đơn giản của g . Tuy nhiên, sau khi thí sinh vòng 2 đã trả lời - đúng hay sai - số thí sinh vòng 2 một lần nữa phù hợp với các cuộc thi m - 1 vòng 3. Nếu ứng viên tiến lên, có k + 1 vòng 3 ứng viên và do đó g (m - 1, k + 1)kết quả có thể xảy ra; nếu ứng cử viên bị loại, số lượng thí sinh vòng 3 vẫn ở mức k và có kết quả có thể là g (m - 1, k) . Vì ứng viên có tiến bộ hay không, nên có kết quả có thể là g (m - 1, k + 1) + g (m - 1, k) kết hợp hai trường hợp này.

Bây giờ, nếu chúng tôi thêm kết quả tiềm năng cho tất cả các ứng cử viên k + m có thể giành được giải thưởng lớn, kết quả phải phù hợp với g (m, k) . Có m thí sinh vòng 2 dẫn đến kết quả tiềm năng g (m - 1, k + 1)k thí sinh vòng 3 dẫn đến g (m - 1, k + 1) + g (m - 1, k) những cái. Tổng kết, chúng tôi nhận được danh tính sau đây.

công thức đệ quy cho g

Cùng với trường hợp cơ sở

trường hợp cơ sở cho g

hai công thức này đặc trưng cho hàm g hoàn toàn.

Một triển khai golf

Trong khi

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

(49 byte, 0**mmang lại 1 khi m giảm xuống 0 ) hoặc thậm chí

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

(48 byte, trả về True thay vì 1 ) sẽ là các giải pháp hợp lệ, vẫn còn các byte được lưu.

Nếu chúng ta xác định hàm f lấy số n của thí sinh vòng 1 thay vì số m của thí sinh vòng 2 làm đối số đầu tiên, nghĩa là

định nghĩa của f theo g

chúng ta có được công thức đệ quy

công thức đệ quy cho f

với trường hợp cơ sở

trường hợp cơ sở cho f

Cuối cùng, chúng ta có

mối quan hệ giữa Sigma và f

Vì vậy, việc thực hiện Python

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

( k/nmang lại 1 lần n = k ) giải quyết nhiệm vụ trong tay với lập chỉ mục dựa trên 1.




3

MATL , 12 byte

t:XnG:QG^*sQ

Đầu vào là 0 dựa trên.

Hãy thử trực tuyến!

Giải trình

Hãy xem xét đầu vào 5là một ví dụ.

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 byte

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

Véc tơ hóa của R có ích ở đây khi áp dụng công thức.


2

J , 19 byte

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

Sử dụng lập chỉ mục một dựa trên.

Hãy thử trực tuyến!

Giải trình

+/@((!{:)*>:^{:)@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

Tiên đề, 39 byte

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

mã kiểm tra và kết quả

(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

Thạch , 9 byte

cR×R‘*ƊS‘

Hãy thử trực tuyến!

Làm thế nào nó hoạt động

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.