10_2足球比赛问题

有2k只球队,有k-1个强队,其余都是弱队,随机把它们分成k组比赛,每组两个队,问两强相遇的概率是多大?

给定一个数k,请返回一个数组,其中有两个元素,分别为最终结果的分子和分母,请化成最简分数

测试样例:
输入:4
返回:[3,7]

class Championship {
public:
    int factorial(int n)
    {
        if(n == 0) return 1;
        return n*factorial(n-1);
    }

    int permutation(int i, int j)
    {
        return factorial(i) / factorial(i - j);
    }

    int combination(int i, int j)
    {
        return permutation(i, j) / factorial(j);
    }

    int gcd(int a, int b)
    {
        if(0 == a % b) return b;
        else{
            return gcd(b, a % b);
        }
    }

    vector<int> calc(int k) {
        // write code here
        vector<int> res(2,0);
        if(k-1<2){
            res[0] = 0;
            res[1] = 1;
            return res;
        }
        int a = 1, b = 0;
        for(int i=0; i<k; ++i){
            a *= (i*2 + 1);
        }
        b = combination(k+1, 2) * factorial(k-1);
        int grt_cmn_dvsr = gcd(a, a-b);
        res[0] = (a-b) / grt_cmn_dvsr;
        res[1] = a / grt_cmn_dvsr;
        return res;
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 足球比赛,一个小组有8支球队进行单循环赛(两两球队之间只赛一场)。每场比赛中,胜者积3分,战平双方各积1分,负则积...
    Albert_Sun阅读 673评论 0 2
  • 标签(空格分隔): 算法 C++ 笔试 第三题:描述小王最近在开发一种新的游戏引擎,但是最近遇到了性能瓶颈。于是他...
    认真学计算机阅读 1,928评论 0 8
  • 该文章总结自牛课网的在线算法课程(https://www.nowcoder.com/) 经典排序算法就是前面讲那几...
    锅与盆阅读 7,735评论 6 14
  • Java经典问题算法大全 /*【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子...
    赵宇_阿特奇阅读 1,894评论 0 2
  • 1.今天借了一辆一元车,在长江职业大学操场上骑了九圈,和先生打了20分钟的羽毛球,身体感觉很舒畅。 2.小儿陪我们...
    彩霞满天q2阅读 172评论 0 0