UVa 10375 Choose and divide

思路:

排列组合。

#include <cstdio>

int main()
{
    int p, q, r, s;
    while (~scanf("%d %d %d %d", &p, &q, &r, &s))
    {
        if (p - q < q)
            q = p - q;
        if (r - s < s)
            s = r - s;

        double ret = 1.0;
        for (int i = 1; i <= q || i <= s; ++i)
        {
            if (i <= q)
                ret = ret * (p - q + i) / i;
            if (i <= s)
                ret = ret / (r - s + i) * i;
        }

        printf("%.05lf\n", ret);
    }
    return 0;
}

 

posted @ 2013-01-19 01:07  kedebug  阅读(204)  评论(0编辑  收藏  举报