【問題描述】
圓桌上圍坐著2n個人。其中n個人是好人,另外n個人是壞人。如果從第m(m<=2n)個人開始數數,數到第k個人,則立即處死該人;然後從被處死的人之後重新開始數數,再將數到的第k個人處死……依此方法不斷處死圍坐在圓桌上的人。試問預先應如何安排這些好人與壞人的座位,能使得在處死n個人之後,圓桌上圍坐的剩餘的n個人全是好人。
【輸入形式】
第一行乙個整數表示測試資料的組數s,接下來的s行每行包含三個正整數,分別表示好人和壞人的人數n(<=32767)、起點m、步長k(<=32767)
【輸出形式】
對於每一組資料,輸出2n個大寫字母,『g』表示好人,『b』表示壞人,50個字母為一行,不允許出現空白字元。
【樣例輸入】2
2 2 3
2 2 4
【樣例輸出】
ggbb
bbgg
#include
using
namespace std;
struct person
;int
answer
(int n,
int m,
int k)
per[
2*n-1]
.p=&per[0]
; per[
2*n-1]
.live=
'g';
person *now=
&per[m-1]
; person *last=
&per[m-1]
;int step,killed=0;
do now-
>live=
'b';
killed++
; last-
>p=now-
>p;
now=now-
>p;
}while
(killed;for
(int i=
0; i<
2*n; i++
) cout<.live;
cout
}int
main()
time [s]
;for
(int i=
0; i)for
(int i=
0; i)answer
(time[i]
.n,time[i]
.m,time[i]
.k);
return0;
}
圓桌問題 a
時間限制 1 sec 記憶體限制 128 mb 提交狀態 題目描述 圓桌上圍坐著2n個人其中n個人是好人,另外n個人是壞人。如果從第乙個人開始數數數到第m個人,則立即處死該人,然後從被處死的人之後開始數數,再將數到的第m個人處死 依此方法不斷處死圍坐在圓桌上的人。試問預先應如何安排這些好人與壞人的座...
練習 圓桌問題
學會鍊錶的練手題 題目描述 圓桌上圍坐著2n個人。其中n個人是好人,另外n個人是壞人。如果從第乙個人開始數數,數到第m個人,則立即處死該人 然後從被處死的人之後開始數數,再將數到的第m個人處死 依此方法不斷處死圍坐在圓桌上的人。試問預先應如何安排這些好人與壞人的座位,能使得在處死n個人之後,圓桌上圍...
約瑟夫環問題 圓桌報數問題
約瑟夫環問題 一圈共有n個人,開始報數,報到m的人自殺,然後重新開始報數,問最後自殺的人是誰?如圖 內環表示人排列的環,外環表示自殺順序 上面n 41,m 3。最普通辦法就是模擬整個過程 建乙個bool陣列,true表示此人還活著,false表示已經自殺。可以模擬整個過程 cpp view plai...