标签:des style blog http color io os ar for
Description
Input
Output
Sample Input
Sample Output
公式
快速排列组合函数:logC(m,n),zuhe[i]其实就是i的阶乘,然后给取log值
这样zuhe[m]-zuhe[n]-zuhe[m-n]就是C(m,n)的log值
然后把其余也取对数,然后再求exp就好了!
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #define M(a,b) memset(a,b,sizeof(a)) 6 #define INF 0x3f3f3f3f 7 8 using namespace std; 9 10 int n; 11 double p; 12 double zuhe[400005]; 13 14 double logC(int m,int n) 15 { 16 return zuhe[m]-zuhe[n]-zuhe[m-n]; 17 } 18 19 int main() 20 { 21 int cas = 1; 22 zuhe[0] = 0; 23 for(int i = 1;i<400005;i++) zuhe[i] = zuhe[i-1]+log(i*1.0); 24 while(scanf("%d%lf",&n,&p)==2) 25 { 26 double res = 0; 27 for(int i = 0;i<=n;i++) 28 { 29 res+=(n-i)*exp(logC(n+i,i)+(n+1)*log(p)+(i)*log(1-p)); 30 res+=(n-i)*exp(logC(n+i,i)+(n+1)*log(1-p)+(i)*log(p)); 31 } 32 printf("Case %d: %.16f\n",cas++,res); 33 } 34 return 0; 35 }
标签:des style blog http color io os ar for
原文地址:http://www.cnblogs.com/haohaooo/p/4035178.html