[CH Round #61] 取数游戏
描述
SJY和CYF在玩一個取數(shù)游戲。他們將1~n分別寫在n張紙上,隨機排成一排,約定SJY先取,只能取走最邊上的兩張紙之一,然后CYF取;以此循環(huán)下去,取到1的人獲勝。假設(shè)SJY和CYF足夠聰明,求SJY獲勝的概率。
輸入
一個整數(shù)n
輸出
SJY獲勝的概率,保留最簡分數(shù)形式(若為1,則輸出1/1;若為0,則輸出0/1)。
樣例
樣例輸入1
2
樣例輸出1
1/1
樣例輸入2
3
樣例輸出2
2/3
數(shù)據(jù)范圍與約定
40%的數(shù)據(jù),0<n≤7。
70%的數(shù)據(jù),0<n≤1000。
100%的數(shù)據(jù),0<n≤1000000000。
樣例2說明
共有1、2、3;1、3、2;2、1、3;2、3、1;3、1、2;3、2、1六種可能,其中第1、2、4、6種可能SJY獲勝。
題解:
數(shù)學分析可以得出:n為1,必勝。否則,n為奇數(shù),只有當頭尾為1時先取必勝;n為偶數(shù)任何情況必勝。
分析過程:
先考慮一種很特殊的情況:2 1 3。此時顯然先取是必敗的。
那么當n為奇數(shù)且不為1且1不在頭尾時,1的位置無論從前向后還是從后向前都是同在奇數(shù)或偶數(shù)位,那么無論先取一方取哪端,另一方取后都維持了這個性質(zhì)。只要另一方足夠聰明,他一定能使讓最后形成 a 1 b 的局面。所以先取必敗。
則當n為偶數(shù),先取一方必然可以在取后讓剩余的n為奇數(shù),那么后取方就相當于n為奇數(shù)時的先取方,是必敗的。
總結(jié)一下:
n為1或n為偶數(shù),必勝 1/1;
n為奇數(shù)(不為1),共n!種排列方式,其中1放在頭部的有(n-1)!種,放在尾部相同,勝利的概率為 (n-1)!* 2 / n!= 2/n。
代碼:
#include<cstdio> using namespace std;int main() {int n, x, y;scanf("%d", &n);if(n == 1 || n % 2 == 0) printf("1/1\n");else printf("2/%d\n", n);return 0; }總結(jié)
以上是生活随笔為你收集整理的[CH Round #61] 取数游戏的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [CODEVS 1285] 宠物收养所
- 下一篇: [codevs 1743] 反转卡片