約瑟夫迴圈問題uva305 Joseph

2021-06-22 01:32:54 字數 1462 閱讀 4190

閒的無聊去找了道資料結構專欄的題目。。。***沒想到是道數學題。。。模擬根本出不來。。。

正好補了一下約瑟迴圈問題,有公式:

f[i] = (f[i - 1] + m) % i;

f[1] = 0;

f[i]代表的是當人數為i的時候,活下來的人是第幾個人

#include#include#includeusing namespace std;

#define maxd 100

int main()

return 0;

}

下面是題的打表**

#include#include#include#include#includeusing namespace std;

#define inf 1<<30

#define maxd 1000 + 10

#define min(a,b) (a < b ? a : b)

int n;

int solve(int m)

return 0;

}int main()

}return 0;

}

下面是ac**

#include#include#includeusing namespace std;

int main()

; int n;

while(scanf("%d",&n) && n)

printf("%d\n",h[n - 1]);

return 0;

}

總之再一次感覺對數學無愛了=-=。。。**

最後貼一下一開始的模擬**,不過k=10的時候就跑不出來了

#include#include#include#include#includeusing namespace std;

#define inf 1<<30

#define maxd 1000 + 10

#define min(a,b) (a < b ? a : b)

int n, m;

int solve(int m)

if(vis[i] == 1) return false;

else

}return true;

}int main()

}printf("%d\n",m);

}return 0;

}

迴圈鍊錶 約瑟夫問題

設編號分別為 1,2,n的n個人圍坐一圈。約定序號為k 1 k n 的人從1開始計數,數到m的那個人出列,他的下一位又從1開始計數,數到m的那個人又出列,依次類推,直到所有人出列為止。演算法思路 1 先建立乙個有n個結點的單迴圈鍊錶,編號從1到n,代表n個人。2 找到第k個結點,即第乙個開始報數的人...

(迴圈鍊錶)約瑟夫問題

time limit 1000 ms memory limit 65536 kib submit statistic n個人想玩殘酷的死亡遊戲,遊戲規則如下 n個人進行編號,分別從1到n,排成乙個圈,順時針從1開始數到m,數到m的人被殺,剩下的人繼續遊戲,活到最後的乙個人是勝利者。請輸出最後乙個人的...

迴圈鍊錶 約瑟夫問題

n個人想玩殘酷的死亡遊戲,遊戲規則如下 n個人進行編號,分別從1到n,排成乙個圈,順時針從1開始數到m,數到m的人被殺,剩下的人繼續遊戲,活到最後的乙個人是勝利者。請輸出最後乙個人的編號。input 輸入n和m值。output 輸出勝利者的編號。struct st cr int n 建立迴圈鍊錶 t...