题目链接:http://poj.org/problem?id=1322

题意:

思路:

double C[N][N];

void init()
{
    C[0][0]=1;
    int i,j;
    for(i=1;i<N;i++)
    {
        C[i][0]=C[i][i]=1;
        for(j=1;j<i;j++) C[i][j]=C[i-1][j-1]+C[i-1][j];
    }
}

double Pow(double a,int b)
{
    double ans=1;
    while(b)
    {
        if(b&1) ans*=a;
        a=a*a;
        b>>=1;
    }
    return ans;
}

int n,m,c;

double cal()
{
    double positive[N],negative[N],a[N],b[N];
    double temp1,temp2;
    int i,j,k;
    for(i=0;i<=c;i++) positive[i]=negative[i]=a[i]=b[i]=0;
    temp1=Pow(0.5,m);
    for(i=0;i<=m;i++)
    {
        j=i-(m-i);
        if((m-i)&1) temp2=-temp1;
        else temp2=temp1;
        if(j>=0) a[j]+=temp2*C[m][i];
        else b[-j]+=temp2*C[m][i];
    }
    temp1=Pow(0.5,c-m);
    for(i=0;i<=c-m;i++)
    {
        temp2=temp1*C[c-m][i];
        for(j=0;j<=m;j++)
        {
            k=j+i-(c-m-i);
            if(k>=0) positive[k]+=temp2*a[j];
            else negative[-k]+=temp2*a[j];
        }
        for(j=0;j<=m;j++)
        {
            k=-j+i-(c-m-i);
            if(k>=0) positive[k]+=temp2*b[j];
            else negative[-k]+=temp2*b[j];
        }
    }
    double ans=0;
    for(k=1;k<=c;k++)
    {
        if(n&1) negative[k]=-negative[k];
        ans+=C[c][m]*Pow(1.0*k/c,n)*(positive[k]+negative[k]);
    }
    return ans;
}

int main()
{
    init();
    Rush(c)
    {
        if(!c) break;
        RD(n,m);
        if((n-m)%2||m>c||m>n) puts("0.000");
        else if(n==0&&m==0) puts("1.000");
        else PR(cal());
    }
}

  

最新文章

  1. 异步控制---实现函数asyncAll,在执行完传入数组中func1,func2,func3异步函数后,输出“end”
  2. CentOS6.5以runlevel 3开机时自动连接某无线设置示例
  3. 判断IE8
  4. 用GDB排查Python程序故障
  5. 百度地图BMap API实例
  6. Python 面向对象基础
  7. SICP 习题 (2.7) 解题总结 : 定义区间数据结构
  8. GC算法精解(五分钟让你彻底明白标记/清除算法)
  9. CJOJ 1943 【重庆八中模拟赛】寻找代表元(二分图最大匹配)
  10. 并发库应用之九 &amp; 到时计数器CountDownLatch应用
  11. linux为什么不可以添加硬链接
  12. docker学习笔记(一)-vagrant/docker machine安装docker,阿里云通过docker machine安装docker
  13. Py学生信息管理系统 案例(优化版)
  14. spring mvc 接收 put参数
  15. U盘量产大致研究思路
  16. java实验三——求平均数,数组排序(有关java保留小数位数,由于编译器版本未到1.5导致的报错format函数第二个参数不对,要求是Object[])
  17. Skype for Business Server-呼叫质量仪表板(一)安装与配置
  18. 从Java的堆栈到Equals和==的比較
  19. 相同内容 yaml 与 json 格式对比
  20. php-5.6.26源代码 - opcode处理器的注入

热门文章

  1. BZOJ3130 [Sdoi2013]费用流
  2. Post 的数据被截断
  3. WCF服务端与客户端时间匹配问题
  4. js实用功能
  5. KIP-32 Add timestamps to Kafka message
  6. poi excel文件上传并解析xls文件
  7. Sqli-labs less 56
  8. JavaScript 性能分析新工具 OneProfile
  9. C#&amp;java重学笔记(泛型)
  10. Android ListVIew 详解(一)