演算法與程式設計 演算法與程式設計入門 簡單計算題2

2021-10-12 09:43:24 字數 814 閱讀 5418

感覺又是與程式設計無關的一道題...這道題是一種常見簡單題型,方法也是固定手熟的,做起來比較順手就把結論推導了一遍然後輸出了。

題目描述:現在有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 金額轉換...