题意:
生日悖论,在365天的情况下,只要有22个人就会有其中两个人生日相同的概率为0.5
询问在别的星球,假设n天是一年的情况下,至少多少个人,才可以使得其中两个人生日相同的概率为0.5
思路:
首先,在365天的情况下,22个人生日,其中没有两个人生日“不”相同的概率为
365/365 *364/365 * 363/365....
那么逆着退回来。
假设有i个人,是的生日不同的概率为:
ans=365/ 365 * 364/365 * ... i/365.
这样1-ans在首次大于0.5时,所经历的操作的次数便是需要的人数
#include <iostream>
#include <stdio.h>
#include <cstring>
using namespace std;
const int maxn=10005;
double dp[maxn];
int val[maxn];
double w[maxn];
int main()
{
int t;
scanf("%d",&t);;
for(int cs=1;cs<=t;cs++)
{
int n;
scanf("%d",&n);
double res=1;
double ans=0;
int i,j;
for(i=n,j=0;;j++,i--)
{
res*=i*1.0/n;
ans=1-res;
if(ans>=0.5)
break;
}
printf("Case %d: %d\n",cs,j);
}
return 0;
}