time limit: 1 sec
memory limit: 128 mb
submit: 142
solved: 68 [
submit][
status][
web board]
n個站成一列的士兵和乙個整數m,士兵編號是1 --- n。每次士兵按編號從小到大的順序依次報數,如果報的數不是m的倍數,則該士兵出列。這樣重複幾次直到剩下的士兵的數量小於m為止。問最後剩下的士兵有幾個,他們的編號分別是多少。
多組測試資料。
每組資料報含兩個數n,m。
n<=1000000000
m<=1000
當n=0,m=0時結束
每組測試資料輸出兩行。
第一行乙個數t,代表剩下的士兵數。
第二行t個數,代表剩下的士兵的編號,公升序排列。
10 38 30 0
192可以找出規律來:3 6
10 3
紅色代表下標
初始化:1 2 3 4 5 6 7 8 9 10
第一次之後:3 6 9
1 2 3
第二次之後:9(最後剩下的) 1
結束:8 3
初始話:1 2 3 4 5 6 7 8
第一次之後:3 6
1 2 結束
自己多舉幾個例子可以發現:
最後剩下的數目肯定
int cent = n/m;//表示每乙個趟有多少個下標是m的倍數
int count = 1;
while(cent >= m)//直達滿足題意
然後我們可以根據報了幾趟數字求結束時候第乙個人的最初下標
int a = 1;
for(int i = 1; i <=count ;i++)
完整**:
#include #include #include using namespace std;
int main()
cout<
HDU5643 約瑟夫環變形
題意 變形的約瑟夫環,最初為每個人編號 1到n 第 i 次刪去報號為 i 的人,然後從它的下乙個人開始重新從1開始報號,問最終剩下第幾號人 思路 媽的,我推不出來,笨方法,打表儲存,不過以後做題也可以這麼用哦 include include include include include defin...
資料結構 約瑟夫環變形
約瑟夫 joeph 問題的一種描述是 編號為1,2,n的n個人按順時針方向圍坐一圈,每人持有乙個密碼 正整數 一開始任選乙個正整數作為報數上限值m,從第乙個人開始按順時針方向自1開始順序報數,報到m時停止報數。報m的人出列,將他的密碼作為新的m值,從他在順時針方向上的下乙個人開始重新從1報數,如此下...
約瑟夫問題 約瑟夫環
約瑟夫 問題 有時也稱為約瑟夫斯置換,是乙個出現在電腦科學和數學中的問題。在計算機程式設計的演算法中,類似問題又稱為約瑟夫環。又稱 丟手絹問題 據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死...