这个破题气死我了。。一整场比赛卡这一道题,式子推的都对,没考虑到组合数上边那个数相等的话可以约分。 还是数学没学好啊TUT 根本就没看出是可以约分的。
TUTTUTTUTTUTTUT
#include<bits/stdc++.h>
using namespace std;
const int N=123;
int a[N];
int main()
{
int n,m,h;
scanf("%d%d%d",&n,&m,&h);
int sum=0;
for(int i=1;i<=m;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
if(sum<n)
{
printf("-1\n");
return 0;
}
if(a[h]==1)
{
printf("%.6f\n",0);
return 0;
}
int x=sum-1;
int y=sum-a[h];
double ans=1.0;
for(int i=1;i<=n-1;i++)
{
ans*=(y*1.0)/x;
x--;
y--;
}
printf("%.6f\n",(double)(1.0-ans));
return 0;
}