寒风飘飘落叶,军队是一朵绿花。亲爱的战友你不要想家不要想妈妈。声声我日夜呼唤,多少句心里话。不要离别时两眼泪花,军营是咱温暖的家。——《军中绿花》
军训时光果然是既辛苦又美好呀,这一天艺术团的学长学姐来慰问演出。
一个又一个节目看得杨八方心里万分欣喜,更激动的事情是,艺术团要选一些同学组成合唱团。
八方同学知道,每晚的拉歌之中踊跃而出许多K歌达人,也有一些唱歌要命。所以,杨八方想要算一下,被选中的这些同学全部都为K歌达人的概率有多少。
输入
有三个以一个空格分隔开的整数nn、mm、kk ( 1≤n≤10001≤n≤1000、0≤m≤n0≤m≤n、1≤k≤n1≤k≤n ),分别代表同学们的人数、K歌达人的人数、被选中的人数。
输出
输出被选中的这些同学全部都为K歌达人的概率有多少(保留三位小数)。
样例输入
3 2 1
样例输出
0.667
被选中的全部为K歌达人概率=(全部K歌达人中选取k个人)/(全部人中选出k个人);
注意下判断条件:
#include<bits/stdc++.h> #include<cstdio> #include<cmath> using namespace std; double lnC(int n,int m){ if(m>n) return 0; if(m<n/2.0) m=n-m; double s1=0.0,s2=0.0; int i; for(i=m+1;i<=n;i++){ s1+=log((double)i); } int def=n-m; for(i=2;i<=def;i++){ s2+=log((double)i); } return s1-s2; } double C(int n,int m){ if(m>n) return 0; else return exp(lnC(n,m)); } int main(){ int n,m,k; cin>>n>>m>>k; if(m==0||k>m||k>n||m>n){ printf("%.3lf\n",0.0); } else if(n==m){ printf("%.3lf\n",1.0);} else{ double ans; ans=C(m,k)/C(n,k); printf("%.3lf\n",ans);; } return 0; }