zoukankan      html  css  js  c++  java
  • UVa10375

    紫薯上刘汝佳写的啥玩意啊,看不懂看不懂

    google之

    发现这么一个公式:

    C(n,k)=C(n,k1)(nk+1)/k

    有了这个公式,那么我们就可以对其进行递推了

    C(p,q)=(p-q+1)/q*C(p,q-1)

    即:

    for (i=1;i<=q;i++)
        ans = ans * (p-i+1) / i;

    边乘边除可以避免越界,代码如下:

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #include<vector>
    #include<stack>
    #include<queue>
    #include<map>
    #include<set>
    #include<list>
    #include<string>
    #include<cmath>
    #include<sstream>
    #include<ctime>
    #define _PI acos(-1.0)
    #define INF 1 << 10
    #define esp 1e-6
    typedef long long LL;
    typedef unsigned long long ULL;
    using namespace std;
    /*===========================================
    ===========================================*/
    int p,q,r,s,i;
    double ans;
    int main(){
        while (~scanf("%d%d%d%d",&p,&q,&r,&s)){
            ans=1.0;
            if (p - q < q) q = p - q;
            if (r - s < s) s = r - s; //两行优化,省一半的时间
            for (i=1;i<=q||i<=s;i++){
                if(i <= q) ans = ans * (p-i+1) / i;
                if(i <= s) ans = ans * i / (r-i+1);
            }
            printf("%.5lf
    ", ans);
        }
    }
  • 相关阅读:
    手机截屏雷阵雨
    2010年5月20日 用户的数据永远不会靠谱
    2010年5月17日 OCD
    2010年8月9日 流水账
    2010年5月19日 借鉴
    立表为据
    2010年6月2日 回来
    不重视小C打屁屁
    2010年8月16日 知行合一
    2010年5月18日 小细节大隐患
  • 原文地址:https://www.cnblogs.com/acbingo/p/4532035.html
Copyright © 2011-2022 走看看