hdu 4465 Candy 数学

思路:易知结果为

∑(n-k)*C(n+k,k)*(p^(n+1)*q^k+q^(n+1)*p^k).

注意不能直接算,注意点技巧!!!看代码

代码如下:

 1 #include<iostream>
 2 #include<stdio.h>
 3 #include<algorithm>
 4 #include<iomanip>
 5 #include<cmath>
 6 using namespace std;
 7 int main(){
 8     int n,i,j=0;
 9     double p,q,ans1,ans2,m,c,pq,ans;
10     while(scanf("%d%lf",&n,&p)!=EOF){
11         q=1-p;
12         pq=p*q;
13         ans1=n*p;ans2=n*q;c=1;
14         for(i=1;i<=n;i++){
15             c*=(n+i)*pq/i;
16             ans1+=c*(n-i);
17             ans2+=c*(n-i);
18             ans1*=p;
19             ans2*=q;
20         }
21         ans=ans1+ans2;
22         printf("Case %d: %.6lf
",++j,ans);
23     }
24     return 0;
25 }
View Code
原文地址:https://www.cnblogs.com/xin-hua/p/3285098.html