牛客竞赛题库(NC232257)
#include<stdio.h> int main() { int n; scanf("%d", &n); if (n % 2 == 0) { printf("%d\n", n / 2); } else { printf("%d %d\n", n / 2, n / 2 + 1); } return 0; }
这道题涉及到我们高中的二项式分布,要轻松做出,需要了解此知识点,我们就先用二项式分布来讲解此题。
在这两人的游戏中,一共n局游戏,每局游戏Alice获胜的概率p=1/2,失败的概率为1-p=1/2,设Alice获胜的局数为随机变量X,那么X服从参数为n和p=1/2的二项式分布,即X~B(n,1/2)。符合二项式定义,也就是n次独立重复试验,每次试验Alice获胜概率为1/2。
下面我用纸写的,打字不方便。
我写这些并非小题大做,这题凭直觉也可以做出来,是因为(1/2)^n这个值是固定的,只考虑组合数就行。但下次概率变为1/3又该如何应对,所以要懂得每道题的原理,我们才能从容应对类似的题目以及变形题目。
解释一下代码中n为奇数中的输出(即第13行),为何不是(n-1)/2 , (n+1)/2 ?
因为在这个代码中n/2是取整数,没有四舍五入,直接去掉小数点后面的数字,故直接可以n/2,n/2+1。
牛客竞赛题库(C语言) 文章被收录于专栏
这是我对题库写的代码以及分析,由易到难,我会坚持把它写完,可能有些粗糙,专栏免费,不想看可以划走。