hdu 5895 (2016icpc亚洲区域赛青岛站D题 Lucky coins)

来源:互联网 发布:js onchange没进去 编辑:程序博客网 时间:2024/06/05 06:12
#include<iostream>#include<cstdio>using namespace std;const int maxn=15;const int maxm=105;double p[maxn],res[maxn][maxm];int n,m=50,cnt[maxn];inline double quick_mod(double a,int b){    double res=1.0;    while(b)    {        if(b&1)            res*=a;        a*=a;        b>>=1;    }    return res;}void init(){    for(int i=1;i<=n;i++)    {        double temp=1.0;        for(int j=0;j<=m;j++)        {            res[i][j]=quick_mod(1-temp,cnt[i]);            temp*=p[i];        }    }}int main(){    int t,i,j,k;    double temp1,temp2,temp3,sum;    scanf("%d",&t);    while(t--&&scanf("%d",&n)!=EOF)    {        for(i=1;i<=n;i++)            scanf("%d%lf",cnt+i,p+i);        init();        for(i=1;i<=n;i++)        {            if(n==1) printf("1.000000\n");            else            {                for(j=1,sum=0.0;j<=m;j++)                {                    temp1=1-res[i][j];                    for(k=1,temp2=temp3=1.0;k<=n;k++)                    {                        if(k==i) continue;                        temp2*=res[k][j];                        temp3*=res[k][j-1];                    }                    sum+=temp1*(temp2-temp3);                }                printf("%.6f",sum);                if(i==n)                    printf("\n");                else                    printf(" ");            }        }    }    return 0;}

0 0