Esta noche, mi prometida me llevó a cenar para celebrar mi cumpleaños. Mientras estábamos fuera, escuché que Happy Birthday cantaba a 5 invitados diferentes (incluido yo mismo), en un restaurante lleno de 50 personas. Esto me hizo preguntarme: el problema original del cumpleaños (encontrar la probabilidad de que 2 personas en una habitación Ncompartan el mismo cumpleaños) es muy simple y directo. Pero, ¿qué pasa con el cálculo de la probabilidad de que al menos kpersonas de otras Npersonas compartan el mismo cumpleaños?
En caso de que se lo pregunte, la probabilidad de que al menos 5 personas de un total de 50 personas compartan el mismo cumpleaños es aproximadamente 1/10000.
El reto
Dados dos enteros Ny k, donde N >= k > 0, genera la probabilidad de que al menos las kpersonas en un grupo de Npersonas compartan el mismo cumpleaños. Para simplificar las cosas, suponga que siempre hay 365 posibles cumpleaños, y que todos los días son igualmente probables.
Para k = 2, esto se reduce al problema de cumpleaños original, y la probabilidad es 1 - P(365, N)/(365)**N(donde P(n,k)es el número de permutaciones de longitud k formadas a partir de n elementos ). Para valores mayores de k, este artículo de Wolfram MathWorld puede resultar útil.
Reglas
- La salida debe ser determinista y lo más precisa posible para el idioma elegido. Esto significa que no hay estimación de Monte Carlo o aproximación de Poisson.
Nykno será mayor que el número entero representable más grande en el idioma elegido. Si el idioma seleccionado no tiene máxima duro en números enteros (aparte de las limitaciones de memoria), a continuación,Nykpuede ser arbitrariamente grande.- Los errores de precisión derivados de imprecisiones de punto flotante pueden ignorarse: su solución debe asumir flotadores de precisión infinita y perfectamente precisos.
Casos de prueba
Formato: k, N -> exact fraction (float approximation)
2, 4 -> 795341/48627125 (0.016355912466550306)
2, 10 -> 2689423743942044098153/22996713557917153515625 (0.11694817771107766)
2, 23 -> 38093904702297390785243708291056390518886454060947061/75091883268515350125426207425223147563269805908203125 (0.5072972343239854)
3, 3 -> 1/133225 (7.5060987051979735e-06)
3, 15 -> 99202120236895898424238531990273/29796146005797507000413918212890625 (0.0033293607910766013)
3, 23 -> 4770369978858741874704938828021312421544898229270601/375459416342576750627131037126115737816349029541015625 (0.01270542106874784)
3, 88 -> 121972658600365952270507870814168157581992420315979376776734831989281511796047744560525362056937843069780281314799508374037334481686749665057776557164805212647907376598926392555810192414444095707428833039241/238663638085694198987526661236008945231785263891283516149752738222327030518604865144748956653519802030443538582564040039437134064787503711547079611163210009542953054552383296282869196147657930850982666015625 (0.5110651106247305)
4, 5 -> 1821/17748900625 (1.0259790386313012e-07)
4, 25 -> 2485259613640935164402771922618780423376797142403469821/10004116148447957520459906484225353834116619892120361328125 (0.0002484237064787077)
5, 50 -> 786993779912104445948839077141385547220875807924661029087862889286553262259306606691973696493529913926889614561937/7306010813549515310358093277059651246342214174497508156711617142094873581852472030624097938198246993124485015869140625 (0.00010771867165219201)
10, 11 -> 801/8393800448639761033203125 (9.542757239717371e-23)
10, 20 -> 7563066516919731020375145315161/4825745614492126958810682272575693836212158203125 (1.5672327389589693e-18)
10, 100 -> 122483733913713880468912433840827432571103991156207938550769934255186675421169322116627610793923974214844245486313555179552213623490113886544747626665059355613885669915058701717890707367972476863138223808168550175885417452745887418265215709/1018100624231385241853189999481940942382873878399046008966742039665259133127558338726075853312698838815389196105495212915667272376736512436519973194623721779480597820765897548554160854805712082157001360774761962446621765820964355953037738800048828125 (1.2030611807765361e-10)
10, 200 -> 46037609834855282194444796809612644889409465037669687935667461523743071657580101605348193810323944369492022110911489191609021322290505098856358912879677731966113966723477854912238177976801306968267513131490721538703324306724303400725590188016199359187262098021797557231190080930654308244474302621083905460764730976861073112110503993354926967673128790398832479866320227003479651999296010679699346931041199162583292649095888379961533947862695990956213767291953359129132526574405705744727693754517/378333041587022747413582050553902956219347236460887942751654696440740074897712544982385679244606727641966213694207954095750881417642309033313110718881314425431789802709136766451022222829015561216923212248085160525409958950556460005591372098706995468877542448525403291516015085653857006548005361106043070914396018461580475651719152455730181412523297836008507156692430467118523245584181582255037664477857149762078637248959905010608686740872875726844702607085395469621591502118462813086807727813720703125 (1.21685406174776e-07)