問題:
17世紀法國數學家加斯帕在《數學的遊戲問題》中講的乙個故事:n個教徒和n個非教徒在深海上遇險,必須將一半的人投入海中,其餘的人才能倖免於難,於是想了個辦法:2n個人圍成乙個圓圈,從第乙個人開始依次迴圈報數,每數到第九個人就將他扔入大海,如此迴圈直到僅剩n個人為止 。問怎樣的排法,才能使每次投入大海的都是非教徒?
輸入:教徒/非教徒個數:n
輸出:教徒和非教徒的排列,教徒用@表示,非教徒用+表示,比如15個教徒和15個非教徒排列:
@@@@+++++@@+@@@+@++@@+++@++@@+
解答:
#include "stdio.h"
// 輸入異教徒/教徒人數:i32n
// 返回排列字串
char* dotask(int i32n)
// 依次找到i32n個異教徒丟掉
int pos = 0;
for (int i = 0; i < i32n; i ++)
// 標記該異教徒位置
pszresult[(pos + i32cnt - 1) % i32cnt] = 1;
} // 陣列中0表示教徒,1表示異教徒,換成@+表示
const char psztag = "@+";
for (int i = 0; i < i32cnt; i ++)
// 返回結果字串
return pszresult;
}int main(int argc, char* argv)
} getchar();
return 0;
}
結果:10: @@@+@@+++@@+@+@@++++
11: @@+++@@++@@@@+++++@@@+
12: @++@@@@+++@++@@@++@@+++@
13: ++@++@@@+@+@@+++@+@++@@@@+
14: +@@+++@++@@+@@@@++++@++@@@+@
15: @@@@+++++@@+@@@+@++@@+++@++@@+
聽說發博有積分拿我來試試
你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下markdown的基本語法知識。全新的介面設計,將會帶來全新的寫作體驗 在創作中心設定你喜愛的 高亮樣式,markdown將 片顯示選擇的高亮樣式進行展示 全新的ka...
j我來試試能不能得積分
建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...
據說寫部落格就能得積分我來試試
據說寫部落格能的肌膚?據說寫部落格就能得積分我來試試 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下markdown的基本語法知識。全新的介面設計,將會帶來全新的寫作體驗 在創作中心設定你喜愛的 高亮樣式,mar...