标签:des style color io os java ar strong for
10 0.400000 100 0.500000 124 0.432650 325 0.325100 532 0.487520 2276 0.720000
Case 1: 3.528175 Case 2: 10.326044 Case 3: 28.861945 Case 4: 167.965476 Case 5: 32.601816 Case 6: 1390.500000 防止溢出 活用log 取自然数对#include<iostream> #include<cstdio> #include<cstring> # include<string> # include<cmath> using namespace std; //typedef __int64 lld; const int maxn=400010+5; int n; double q; double p; double c[maxn]; double C(int x, int y) { return c[x]-c[y]-c[x-y]; } double v1(int x ) { return C(2*n-x,n)+(n+1)*log(q*1.0)+(n-x)*log(p*1.0); } double v2(int y) { return C(2*n-y,n) + (n+1)*log(p*1.0)+(n-y)*log(q*1.0); } int main() { int k=0; c[0]=0; for( int i=1; i<400010; i++) c[i]=c[i-1]+log(i*1.0); while(cin>>n>>q) { k++; double tot=0; p=1-q; for(int i=n; i>0;i--) { tot+=i*( exp(v1(i))+exp(v2(i)) ); } printf("Case %d: %lf\n",k,tot); } return 0; }#include<stdio.h> #include<string.h> #include<math.h> #define N 400200 double f[N]; double logc(int n,int m) { return f[m]-f[n]-f[m-n]; } int main () { int n; int i,j,k=0; double p,ans,ret; f[0]=0; for (i=1;i<N;++i) f[i]=f[i-1]+log(1.0*i); while (scanf("%d%lf",&n,&p)!=EOF) { ans=0; double p1=log(p),p2=log(1-p); double q1=(n+1)*p1,q2=(n+1)*p2; for (i=0;i<n;++i) { ans+=((n-i)*exp(logc(n,n+i)+q1+i*p2)); ans+=((n-i)*exp(logc(n,n+i)+q2+i*p1)); } printf("Case %d: %.6lf\n",++k,ans); } return 0; }
标签:des style color io os java ar strong for
原文地址:http://blog.csdn.net/u013514722/article/details/39322399