Herkesin katılabileceği başka bir kolay mücadele zamanı!
Parantez içindeki ifade, multinom katsayısıdır, şöyle tanımlanır:
Terimleri izin k i her tamsayı bölümleri yoluyla aralığı için n verir n Pascal ait ıncı seviyesini m -simplex. Görevin bu katsayısı hesaplamak.
Görev
M sayılarını alan, n , k 1 , k 2 , ..., k m-1 alan ve karşılık gelen çok terimsel katsayısı veren veya veren bir program veya işlev yazın . Programınız isteğe bağlı olarak gerekirse ek bir argüman olarak m alabilir . Bunu not et k m girişinde değil.
Bu sayılar, örneğin listelerde gruplandırılmış veya tekdüze olarak kodlanmış, herhangi bir biçimde girilebilir, ya da multinom katsayısının gerçek hesaplaması kodunuz tarafından gerçekleştirildiği sürece kodunuz tarafından gerçekleştirilebilir.
Çıkış formatı benzer şekilde esnektir.
Tüm kodlar bir dakikadan daha az bir sürede n ve m 'den 1000' e kadar çalışmalıdır.
Tamsayı taşması konusunda endişelenmeyin.
Multinom katsayısını hesaplamak için tasarlanan yerleşik yapılara izin verilmez.
Standart boşluklar uygulanır.
puanlama
Bu kod golf: Bayt cinsinden en kısa çözüm kazanır.
Test durumları
Input: 3, [2, 0]
Output: 3
Input: 3, [1, 1]
Output: 6
Input: 11, [1, 4, 4]
Output: 34650
Input: 4, [1,2]
Output: 12
Input: 15, [5,4,3,2]
Output: 37837800
Input: 95, [65,4,4]
Output: 1934550571913396675776550070308250
Input: 32, [2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]
Output: 4015057936610313875842560000000
Input: 15, [3,3,3,3]
Output: 168168000
Input: 1000, [10,10,10,10,10,10,10,10,10,10,100,100,100,100,100,100,100,100]
Output: 1892260836114766064839886173072628322819837473493540916521650371620708316292211493005889278395285403318471457333959691477413845818795311980925098433545057962732816261282589926581281484274178579110373517415585990780259179555579119249444675675971136703240347768185200859583936041679096016595989605569764359198616300820217344233610087468418992008471158382363562679752612394898708988062100932765563185864346460326847538659268068471585720069159997090290904151003744735224635733011050421493330583941651019570222984959183118891461330718594645532241449810403071583062752945668937388999711726969103987467123014208575736645381474142475995771446030088717454857668814925642941036383273459178373839445456712918381796599882439216894107889251444932486362309407245949950539480089149687317762667940531452670088934094510294534762190299611806466111882595667632800995865129329156425174586491525505695534290243513946995156554997365435062121633281021210807821617604582625046557789259061566742237246102255343862644466345335421894369143319723958653232683916869615649006682399919540931573841920000000000000
Input: 33, [17]
Output: 1166803110
Input: 55, [28]
Output: 3824345300380220
[1000 {999 ones}]
, çünkü üs, 64 bitlik yüzdürmelerin temsil edebileceğinden çok daha fazladır. (128 bitlik yüzmeler muhtemelen yeterli olacaktır, ancak JavaScript’in yerel sayı türünü kullanmak istediğinizi farz ediyorum?)
1934550571913396675776550070308250
çıktı alabilir miyiz1.9345505719133966e+33
?