c語言 ACM題目 騙紅包

2021-10-12 02:41:36 字數 908 閱讀 7176

描述

zf 每年都會和 zn 玩乙個遊戲:在 1到 1000 以內隨機選 n個硬幣,讓 zf 先開始他的回合,然後互相輪轉。zn 如果輸了就會給 zf n 個硬幣。當然是 zf 先開始遊戲啦。

在各自的回合中都能執行一次操作:讓硬幣數變為原來的一半(向下取整)或者減一。誰清除掉最後一枚硬幣誰就贏了。

zn 和 zf 都很聰明,每一次都會選擇最有利的方式進行操作。

如果進行了 1000 輪遊戲,請問 zf 騙到硬幣數的期望是多少?

sample input

sample output

輸出 1000 輪遊戲後 zf 騙到硬幣數的期望。

首先沒思路的話可先列舉法,列著列著就會發現到後面只需要看減1或者除以2後的數字就好了,如果這個數字在前面計算得到是zf贏,則這次就是zn贏,因為順序是顛倒的,且兩人都太聰明了,會選擇最有利的方式進行操作(所裡理解為每輪獲勝的可能只有一種)!!

而且,因為zf是首發的,所以只有在計算得到兩種方式都是zn

贏才可能是zn贏!!

還有期望的計算:概率乘以硬幣數並進行累加,因為概率只有1和0,所以可以只計算概率為1的即計算zf獲勝的硬幣數進行累加

#include

intmain()

;//全域性變數自動初始化為0 ,設0為zf贏,1為zn贏

a[2]=

1;for(i=

2;i<=

1000

;i++)}

for(i=

1;i<=

1000

;i++)}

printf

("%d"

,sum)

;return0;

}

C語言題目

題目 problem description 輸入乙個字串,統計其中大寫字母 小寫字母 數字的個數 input 輸入資料有多組,每組資料佔一行,為乙個字串s 1 s 100 資料保證字串中只有 a z 的大寫字母,a z 的小寫字母,和 0 到 9 的數字 output 對於每組資料,輸出以空格隔開...

c語言題目

1.某商場推出打折 活動 若顧客購物額不滿 100 元則不優惠 達到或超過 100 元則九五折優惠 達到或超過 200 元則九折優惠 達到或超過 500 元則八五折優惠 達到或超過 1000 元則八折優惠。請編寫函式,根據購物金額計算優惠後的實際付款金額。函式原型 double cash doubl...

C語言題目

1 include 2 static jmp buf buf 3int main void 4 11 b 5 12 longjmp buf,1 13 輸出結果為a 3 b 5 c 0 d 都不是 答案為b,也就是輸出5。關鍵點在於理解setjmp以及longjmp,第一次執行到setjmp,會設定j...