Fast combination c (n, k) = n * (n-1) * (N-2) * ... * (N-K 1) / 1 * 2 * 3 * ... * K conquest:
Function ZDGYS (BYVAL X As Long, Byval Y As Long AS Long 'GET GREATEST COMMON DIVISOR Maximum DIM TEMP AS Long IF X> Y THEN TEMP = x: x = Y: Y = Temp' Let x
For i = k to 1 step -1 for j = 1 to k TEMP = zdgys (nk (j), NN (i)) 'maximum number of conventions IF TEMP> 1 THEN' eliminating molecular denominator NN (i) = nn (i ) / Temp nk (j) = nk (j) / temp end if Nextnext
Redim x (1) redim xys (1) x (1) = 1 'initialization array xys (1) = 1t = 1
Do While NOT T> K
Temp = len (cstr (NN (t))) Redim Y (1 to Temp) for i = 1 to Tempy (i) = VAL (MID (NN (T), Temp 1 - I, 1)) NEXTREDIM XYS 1 to Ubound (x) Ubound (Y)) for i = 1 to Ubound (x) for j = 1 to Ubound (Y) XYS (i J - 1) = xys (i j - 1) x ( I) * Y (j) 'analog multiplication method NextNextFor i = 1 to Ubound (x) ubound (y) - 1' carry TEMP = Xys (i) / 10XYS (i) = xys (i) MOD 10XYS (i 1) = xys (i 1) TempNextt = T 1X = xysif x (Ubound (x)) = 0 THEN Redim preserve x (1 to Ubound (x) - 1) 'First bit is zero LOOP
Redim Result (1 to Ubound (x)) 'Billy assignment for i = 1 to Ubound (x) Result (i) = x (ubound (x) 1 - i) Next
CNK = JOIN ("" ") 'Last Result R: Debug.print" C ("& N &", "& K &") = "& CNK & VBCRLF &" Time "; Timer - Stimer &" Second, The results are about "& Val (Left (CNK, 3)) / 100 &" * 10 ^ "& len (cn) - 1Erase X () 'Release ERASE Y () ERASE XYS () ERASE RESULT () ERASE NN () ERASE NK ()
End Sub
Private Sub Command1_Click () Calc 1500000000, 1000und Sub
C (1500000000, 1000) =
3065280436716469658006124561858464461262763076786796816048228720750557885411807576741373334186511354582782194323421592538160147683849150271356210105130812181188625634426407409550044345449854478287352738123295359160883977844312686312530359477663740801006594513797100302297010608727277991209511867399314883541554540480340821035993605754164129832139886636763090978095442795026060267784135657201538459302807639192288018886345469562561315855518973910327304369318605429252275740238920194926245878398262536976921563966551312065134362707730524722544821540551174517731557729730799559227894400091212960863557200381189273063864657650555966509828706790180449202144744727582852744846331943726397433250697936964842632252101208301111541773479218580361384777609867300757405810201039254556462674897485286065421392256167131373815481931593614638969955863293916810122277647740405200249116277070801684392319217429211983069253020363107140659155782000841348093687462632548143219580538023365853417412995918393786766282699107 911133850783485033472928852736924787858783256547920874450877833887684531248298736410849846510456845624612630166486767521298941545225796323158242880413245353062356203828781511838177503119412807537163424912500516317536345974886791415590987467373667125789529031550499829955004586523742643483490067818114225182597682406685924776339396672841510129318376788456552068514035419940457326754014817861308303928864036876493219609226061280843268874031816817714988426493696568143280855260250676996023116731440204211539132292844584880452761971894227302973911975467907946644061574468393434568385484660734100753993231571736485422571434767089016677091577677624307859296872483248968752772864519487255345699886930520786580622722824046276394753860400946132311752779328974
5018918680050158833377256878342226038335968075073066708948751926064101932688708070972742976746669773522500626362218897275189840528789502160913361730351366579932326949751303046239529917281431024867799141200833929055039117446235095261319287039924501955885408786864766666179804050926238297570352362160646695473979572080274723182393467252406938755835973585538888233140836639673055810280530161047565105056191259402557546062663149807820850721607832667883835853491798687285433469973723070029887151224892374554667132810263246741920398381560995586116435336668086735996210380651185950181222288773122498950468782425732304340361291059389453644565588619918495101003681448457650276701709851748681473864319718504684039251604015610508150552147153808743465905683130916303237016638713958685021075266783472002051065502419194601235929294444041936017137491251351327293306795207718070253412158539452418227263212189992863000083749471357436062471359873115691304279442807157134670115889000449540459077189604149293330863116234 937585596100863199359470190862668063710752295922314349843213145637598520454977206161737311181275038945492592107963547180908095567677268276647414212537107884627846628529110671588643375513826567593228681751623648914212833098504187516701899089836341651632877201830938439864542029138356501030414803306920447442494403172023855874827652475829549179429277923966103280437285008533655739559815237810160800404271399529345607321632407618302218506087747281711816275952385300123419119651812539626008479518803800204241415723861161475364403266589079446760547415461785658842813934872809441606838372946069290650323137211372623387643292062185604875098174848114827946543780012495836176514887528611865682171001390146194237358933818961231577169742945244631925175731309409
3012036578148235611955734170396116854817446396247796504780317970103101939101437206542300058351209166725568961416973971243394306835278273460881993104259772960505800908942833955627046601462439923926100351694847561115834918728628428684574989668358954276517259998579366370863919458488550144795505654641173876095849858777163616493332746567539390302265993028398098644186849016388216168623061266504400961667678364080986561088331210894443987729305687361306477575185936683948847862660778366475323395777563734204349964134958976865818239776608040336655027854751022242522092920299936119731116305679232021302361729937904685190680975603314476671567544815523899150556794522439018670709605048200675330775192530449348147384184753232765776515731176139291106795832415988213421332868541351146418366171033409595385801417663529640561303778684116770641341919635476478210921417522141303765143711541995971150960131232519621054352097932775902927461179307701583639848164375781888776468855358298401392607901872399645767531338796 022462221954404149043602905914319206978586889411682520759131928491240958237350356106888105362969843973925763123160304660202309227354952136424653259086704895331475443505049271458255523368445989017313527039512020016828058227621814880840372108525533032409348606844520206614091384044833241274163505690139710931741390444475439690117859648369918207743133452428435315333103668392173589446867668371163229820779765499650117723979350896958548308298021256698879718058540203895365185367207685284461635803360197775548165620784024815840886745207159562356352116633827246259175790852606755733637168338159665038609938119804753114116323516824116362844495233631020946387946836598996052430525001757687690991737183670667818113613486384251781735336595031917872873972104674