約瑟夫問題,輸入總人數,自動產生大於0小於n的隨機數
#include
#include
#include
#include
using namespace std;
int main() {
int m, n;
cout << “請輸入總人數” << endl;
cin >> n;
srand(time(0));
m = rand() % n + 1;
cout << “隨機數為:” << m << endl;
vectortot;
if (n <= 0) {
cout << “無效數字” << endl;
}
else {
for (int i = 0; i < n; i++) {
int j = 1;
tot.push_back(j);
}
int i = 0;
int p = 0;
while (1) {
while (((p + i + 1) % n) != 0 && tot[(p + i + 1) % n - 1] == 0) {
p++;
}
if ((p + i + 1) % n == 0 && tot[n - 1] == 0) {
p++;
while (((p + i + 1) % n) != 0 && tot[(p + i + 1) % n - 1] == 0) {
p++;
}
}
if ((p + i + 1) % n == 0 && (i + 1) % m == 0) {
tot[n - 1] = 0;
}
if ((p + i + 1) % n != 0 && (i + 1) % m == 0) {
tot[(p + i + 1) % n - 1] = 0;
}
if (i == (n - 1) * m - 1) {
break;
}
i++;
}
for (int i = 0; i < n; i++) {
if (tot[i] == 1) {
cout << “留下的最後一個人的原編號為:” << i + 1 << endl;
break;
}
}
cout << “程式結束” << endl;
}
return 0;
}
相關文章
- 小於n的最大數
- 產生0到100內的任意隨機數隨機
- 約瑟夫環(Josephus)問題--報數遊戲(連結串列)遊戲
- R產生隨機數隨機
- 隨機產生0-1之間實數的方法隨機
- 演算法訓練 - 調和數列問題 輸入一個實數x,求最小的n使得,1/2+1/3+1/4+...+1/(n+1)>=x。 輸入的實數x保證大於等於0.01,小於等於5.20,並且恰好有兩位小數。你的演算法
- Matlab產生隨機數函式小結Matlab隨機函式
- 約瑟夫問題pascal程式
- Math類產生隨機數後保留一位小數隨機
- vc中產生隨機數隨機
- c++產生隨機數C++隨機
- C++大隨機數的問題C++隨機
- 關於如何產生隨機數的幾種方法彙總!(2018.07.08)隨機
- 計算機隨機數的產生 (轉)計算機隨機
- 高效產生不重複的隨機數隨機
- 約瑟夫生者死者遊戲問題遊戲
- Random 專案總結 -11 產生隨機數字random隨機
- 【筆記】如何產生隨機數筆記隨機
- js隨機產生區間數JS隨機
- jquery實現的限制文字框只能夠輸入大於0整數jQuery
- matlab產生隨機數或隨機矩陣Matlab隨機矩陣
- 如何產生指定範圍的隨機數隨機
- C 語言產生隨機數的方法隨機
- C語言產生隨機數的方法C語言隨機
- 約瑟夫(Josephus problem)環問題初探
- linux生產32位隨機數Linux隨機
- 高效產生一組不重複的隨機數隨機
- 關於小數中0的處理
- 小於n的最大數,記一道位元組面試題面試題
- 一道關於隨機數生成的題目隨機
- P1996 約瑟夫問題996
- 陣列解決約瑟夫環問題陣列
- JavaScript產生隨機數例項程式碼JavaScript隨機
- ORACLE產生隨機數的多種方法分享 轉Oracle隨機
- 從oracle表中隨機取記錄,產生隨機數和隨機字串Oracle隨機字串
- 關於matlab生成隨機數Matlab隨機
- JAVA Struts2 考試功能 —— 自動產生隨機試題Java隨機
- matlab中的產生隨機數的rand函式Matlab隨機函式