51Nod1073 約瑟夫環 (遞推公式)
#include<iostream> #include<cstring> #include<algorithm> #include<cstdio> #include<cmath> #define N 1000005 int a[N]; using namespace std; int main() { int n,k; cin>>n>>k; int i; for(i=0;i<=n;i++) a[i]=i; int s=0; for(i=2;i<=n;i++) s=(s+k)%i;//f[n]=(f[n-1]+k)%i cout<<a[s+1]<<endl; return 0; }
相關推薦
51Nod1073 約瑟夫環 (遞推公式)
#include<iostream> #include<cstring> #include<algorithm> #include<cstdio> #
約瑟夫環數學遞推公式及其證明
對於約瑟夫問題,今天看到了一篇好帖子,是用數學方法處理的,感覺還不錯的 無論是用連結串列實現還是用陣列實現都有一個共同點:要模擬整個遊戲過程,不僅程式寫起來比較煩,而且時間複雜 度高達O(nm),當n,m非常大(例如上百萬,上千萬)的時候,幾乎是沒有辦法在短時間內出結果的
[CSP]201712-2 遊戲 暴力+(以此為例)約瑟夫環的遞推
愚蠢的看錯題了。中文讀題能力還不如英文,有待提升。 所以這道題用普通的陣列模擬操作就可以了。總之跟暴力模擬的約瑟夫環沒什麼區別。 可以用next陣列模擬指標做資料結構,但是資料範圍不大的情況下不建議這麼寫,維護一個指標環寫起來還是比較麻煩的。 #include <
資料結構——約瑟夫環(迴圈連結串列)
n個數據元素構成一個環,從環中任意位置開始計數,計到m將該元素從表中取出,重複上述過程,直至表中只剩下一個元素。 提示:用一個無頭結點的迴圈單鏈表來實現n個元素的儲存。 樣例: 輸入: 10 3 1 //分別為總數,出列的人數到的數字,開始數的人的編號。 輸出:
約瑟夫環——公式法(遞推公式)
約瑟夫問題 約瑟夫問題是個著名的問題:N個人圍成一圈,第一個人從1開始報數,報M的將被殺掉,下一個人接著從1開始報。如此反覆,最後剩下一個,求最後的勝利者。 例如只有三個人,把他們叫做A、B、C,他們圍成一圈,從A開始報數,假設報2的人被殺掉。 首先A開
[51nod1073]約瑟夫環
成了 out namespace include 結果 div sin cin 比較 解題關鍵:此題不需要模擬,可以用數學方法解決。 無論是用鏈表實現還是用數組實現都有一個共同點:要模擬整個遊戲過程,不僅程序寫起來比較煩,而且時間復雜度高達O(nm),當n,m非常大(例如
約瑟夫環(線性寫法)
1073 約瑟夫環 1 秒 131,072 KB 0 分 基礎題 N個人坐成一個圓環(編號為1 - N),從第1個人開始報數,數到K的人出列,後面的人重新從1開始報數。問最後剩下的人的編號。 例如:N
約瑟夫環(使用C語言單向迴圈連結串列來解決)
題目描述 編號為1,2,…,n的n個人按順時針方向圍坐在一張圓桌周圍,每人持有一個密碼(正整數)。一 開始任選一個正整數m作為報數上限值,從第一個人開始按順時針方向自1開始報數,報到m時停止報數,報m的那 個人出列,將他的密碼作為新的m值,從他順時針方向的下一個人開始重新從1報數,
約瑟夫環(猴子選大王問題)
資料結構與演算法之約瑟夫環。 與其枯燥的講解約瑟夫環,倒不如用約瑟夫環來解決一個有趣的問題。 猴子選大王問題: 現在有N個猴子需要選取一個猴王,這N個猴子手拉手圍成一個圈,旁邊有一位德高望重的老猴,先將這一圈猴按順時針方向編號1,2.......N,然後
約瑟夫環(連結串列法,公式法)
約瑟夫環作為一個數學問題,它的程式碼實現方式有很多,比如迴圈連結串列,公式解決或者動態規劃,之前參考資料也有用遞迴解決的。Anyway,這些都是解決約瑟夫環問題很有效的方法。這裡總結兩種方法,迴圈連結串列法和公式法。 首先是迴圈連結串列法,它的原理很簡單,也很容
約瑟夫環(Josephus)迴圈連結串列解決
關於約瑟夫環的簡單思路技巧 題目要求: 分析題目: 設編號為1,2,3,4…n的n個人順時針坐一圈,約定編號為K的人按順時針從1開始報數,數到m的人出列,他的下一位從1開始 報數… 預設第一次輸入剛開始的序號,之後選擇到誰就用誰的密碼,並把它刪掉。 思路分析:正
順序表之約瑟夫環(josephus)
1.問題描述 n個犯人站成一個圈,從第s個人開始數起,每數到第d個犯人,就拉出來斬了,然後再從下一個開始數d個,數到的人再處決,………………,直到剩下最後一個犯人就予以赦免。 2.演
約瑟夫環問題--遞迴推導
本文為學習《劍指offer》的記錄。因其原理在原作者部落格上找不到,所以,只能自己編寫記錄,如有不當之處,歡迎指正。 題目描述: n個數,編號為 0 , 1, ……, n-1 排成一個圓圈,從數字 0 開始,每次從這個圓圈中刪除第 m 個數,請問最後一個剩下
華為筆試題目--約瑟夫環(Joseph)修改版
測試空間旗下大頭針出品 這個可是已經執行通過了的。大家可以看看,如果有什麼問題,及時交流。 #include<stdio.h>#include<stdlib.h>typedef struct Node *PNode; struct Node { int num;
約瑟夫環(深圳大學oj題目)(適合初學者的講解方式)
題目描述 有n個人圍成一個圈,從第一個人開始順序報號1,2,3。凡是報到 3退出圈子中的人原來的序號。要求打印出退出人的序號。以及找出 最後留在圈子中的人原來的序號。 輸入 n 輸出
約瑟夫環(數學高效率解法,很詳細)
5.5.4 用數學方法解約瑟夫環(1) 原文copy:http://book.51cto.com/art/201403/433941.htm 5.5.4 用數學方法解約瑟夫環(1) 上面編寫的解約瑟夫環的程式模擬了整個報數的過程,程式執行時間還可以接受,很快就可
約瑟夫環(報數遊戲)java實現
開端 公司組織考試,一拿到考題,就是演算法裡說的約瑟夫環,仔細想想 以前老師將的都忘了,還是自己琢磨把~ package basi
約瑟夫問題(猴子選大王)
/** * @param $n * @param $m * @return array * 猴子選大王 */ function choose($n,$m){ for($i=1;$i<=$n;$i++){ $arr[$i] = $i;
約瑟夫問題(鏈式結構)
package Linear; /* * (鏈式結構) * 約瑟夫問題:n個人圍坐在一張桌子上,從第s個人開始數,數第m個人,該人出局。 * 從下一個人開始數,數第m個人,該人出局。。。迴圈往復直至所有人出局 */ public class K { public stat
約瑟夫問題(連結串列經典)
約瑟夫問題 總時間限制: 1000ms記憶體限制: 65536kB 描述約瑟夫問題:有n只猴子,按順時針方向圍成一圈選大王(編號從1到n),從第1號開始報數,一直數到m,數到m的猴子退出圈外,剩下的猴