Əvvəlcə nəfərdən ibarət bir qrupda bütün doğum günlərinin fərqli olma ehtimalını \overline{p(n)} hesablayacağıq. Əgər 365-dən böyükdürsə, bu ehtimal Dirichlet prinsipinə görə sıfıra bərabərdir. Əgər 365-dən böyük deyilsə, bu qaydada düşünürük.
Birinci şəxsi seçirik və onun doğum gününü yadda saxlayırıq. Sonra ikinci şəxsi seçirik: onun doğum gününün birincinin doğum günü ilə üst-üstə düşməməsi ehtimalı 1 - 1 / 365-ə bərabərdir. Üçüncü şəxs üçün isə onun doğum gününün ilk ikisinin doğum günləri ilə üst-üstə düşməməsi ehtimalı 1 - 2 / 365-ə bərabərdir.
Eyni qaydada davam edərək, sonuncu şəxs üçün onun doğum gününün bütün əvvəlki doğum günləri ilə üst-üstə düşməməsi ehtimalı 1 - (n - 1) / 365-ə bərabərdir.
Bu ehtimalları bir-birinə vuraraq, qrupdakı bütün doğum günlərinin fərqli olma ehtimalını əldə edirik:
O zaman nəfərdən ən azı ikisi üçün doğum günlərinin üst-üstə düşmə ehtimalı, bütün doğum günlərinin fərqli olma ehtimalının birini çıxmaqla müəyyən edilir:
Alqoritmin Reallaşdırılması
massivində müvafiq ehtimalları saxlayaq.
double p[401];p[1] = 1 olsun. Digər massiv dəyərlərini məsələnin analizi ilə verilmiş formul ilə hesablayırıq.
p[1] = 1.0;
for (i = 2; i < 401; i++)
p[i] = p[i-1] * (1.0 - (i - 1.0) / 365);Hər bir giriş dəyəri üçün müvafiq ehtimalı hesablayır və nəticəni çıxarırıq.
while (scanf("%d",&n) == 1)
printf("%.8lf%%\n",(1 - p[n]) * 100);