有n個士兵站成一行,從右到左,從1到n依次編號,他們還得到乙個整數m。然後這些士兵從右手邊的士兵開始報數。報的數為m的倍數的士兵留在佇列裡,其他的士兵需要離開佇列。他們重複進行這項操作直到佇列中的人數小於m。舉例來說,如果有10個士兵,並且m=3。第一次操作後,編號為3,6,9的士兵留在佇列中。第二次操作後,編號為9的士兵留在佇列中。由於佇列中的士兵的數量小於m,那麼編號為9的士兵就是最終留在佇列裡面的士兵。
現在我們想知道哪些士兵將會最終留在佇列中,你能告訴我們嗎?
輸入包含幾個測試資料。每個測試資料只佔單獨的一行,包含兩個整數n和m(3 <= n <= 10^9, 2 <= m <= n)。當n=0 並且m=0的時候標誌輸入結束。
對於每組測試資料,輸出兩行。第一行包含乙個整數x,表示最終留下的士兵的數量。第二行包含x個整數,表示最終留下的士兵的編號。你應該把他們按照公升序輸出。
樣例輸入
10 3
8 30 0
樣例輸出19
23 6
#include#include#include#includeusing namespace std;
long long a[200000];
int main()
int c = 0;
for (long long i = t; i <= n; i=i+t)
cout << c << endl;
for (long long i = 0; i < c - 1; i++)
cout << a[c-1]<}}
1142 巡邏的士兵
該題有題解 時間限制 1000ms 記憶體限制 65536k 提交次數 217 通過次數 58 題型 程式設計題 語言 g gcc 有n個士兵站成一佇列,現在需要選擇幾個士兵派去偵察。為了選擇合適的士兵,多次進行如下操作 如果佇列超過三個士兵,那麼去除掉所有站立位置為奇數的士兵,或者是去除掉所有站立...
SCAU巡邏的士兵
有n個士兵站成一佇列,現在需要選擇幾個士兵派去偵察。為了選擇合適的士兵,多次進行如下操作 如果佇列超過三個士兵,那麼去除掉所有站立位置為奇數的士兵,或者是去除掉所有站立位置為偶數的士兵。直到不超過三個戰士,他們將被送去偵察。現要求統計按這樣的方法,總共可能有多少種不同的正好三個士兵去偵察的士兵組合方...
scauoj 1142 巡邏的士兵
有n個士兵站成一佇列,現在需要選擇幾個士兵派去偵察。為了選擇合適的士兵,多次進行如下操作 如果佇列超過三個士兵,那麼去除掉所有站立位置為奇數的士兵,或者是去除掉所有站立位置為偶數的士兵。直到不超過三個戰士,他們將被送去偵察。現要求統計按這樣的方法,總共可能有多少種不同的正好三個士兵去偵察的士兵組合方...