感覺又是與程式設計無關的一道題...這道題是一種常見簡單題型,方法也是固定手熟的,做起來比較順手就把結論推導了一遍然後輸出了。
題目描述:現在有n個人在玩傳球遊戲,規定每一次傳球必須傳給非自己的其他任何一人,假設傳m次球後,球又回到第乙個人手裡,有多少種可能的情況?
標準輸入:n、m,其中9≥n≥2,15≥m≥1.(資料太大了不好儲存)
標準輸出:輸出結果,並保證輸入使得輸出結果小於
題解思路(純數學方法,概率乘以總可能情況):
設傳第m次球後球在第i個人手裡的概率為
,由第乙個人持球則
,然後顯然可以得到以下遞推方程:
對i從1到n求和可得:
也即故我們可以遞推得到:
將(2)代入(1)消去
得:解得不動點
,然後解出該遞推方程,並取i=1得:
故經過m次傳球後球回到第乙個人手裡的概率求得。
又知在經過m次傳球後,不加任何限制條件下可能發生的所有情況的總和為
所以最終結果用概率乘以總情況:
也即(方便寫**)
題目就這樣麻煩地做出來啦。不知道有什麼簡便方法的我傻傻地就在那算qaq。
需要注意的是在寫**的時候不要用pow函式,它的返回型別是double(強制型別轉換可能會出問題),而我們需要輸出long型別的ans,所以用for迴圈sgn=-sgn來表示
,另外用乙個for迴圈表示
,然後再計算ans就可以了。
簡單計算題總感覺做複雜了...
演算法與程式設計
1.寫乙個程式 找出乙個字串中出現次數最多的字元和出現的次數 例如 string s abcdeddss ssaaaa 1.將字串轉換為字元陣列 char c s.tochararray 2.建立陣列 用來裝字元陣列 listlist new arraylist for int i 0 ilist....
程式設計與基礎演算法
演算法 algorithm 是指解題方 而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。也就是說,能夠對一定規範的輸入,在有限時間內獲得所要求的輸出。乙個演算法的優劣可以用空間複雜度與時間複雜度來衡量。有窮性 finiteness 演算法必須在執行有限個步驟...
演算法與程式設計 3
金額轉換,阿拉伯數字的金額轉換成中國傳統的形式如 1011 一千零一拾一元整 輸出 package com.test public class rmbconvert private static final char units private static final char data 金額轉換...