n個人圍成一圈順序編號,從1號開始按1、2、3…順序報數,報p者退出圈外,其餘的人再從1、2、3開始報數,報p的人再退出圈外,以此類推。 請按退出順序輸出每個退出人的原序號。
輸入格式:
輸入只有一行,包括乙個整數n(1<=n<=3000)及乙個整數p(1<=p<=5000)。
輸出格式:
按退出順序輸出每個退出人的原序號,資料間以乙個空格分隔,但行尾無空格。
輸入樣例:
在這裡給出一組輸入。例如:
7 3輸出樣例:
3 6 2 7 5 1 4
```c
#include#includetypedef int status; //設定函式的返回型別為int
typedef int elemtype; //設定元素資料型別為int
typedef struct lnode //定義結點結構
lnode,*linklist; //命名為lnode和指標型linklist
linklist initlist(int t) //構造鍊錶的函式,返回值為乙個結點的指標
l->data=t; //最後乙個結點的資料域賦值
l->next=s; //最後乙個結點的指標域指向第乙個結點
return s; //將第乙個結點的位址返回
}status deleteelem(linklist &l) //刪除需要刪除的結點,l為需要刪除的結點的位址
int main(void)
printf("%d ",l->data); //將需要退出的人對應的結點輸出
deleteelem(flag); //刪除需要退出的人的結點
} else //當k不為1的時候,計數j次再對應刪除
printf("%d ",l->data);//先輸出
deleteelem(flag); //再刪除
} }printf("%d",l->next->data);//最後乙個後面不能有空格
}
PTA 猴子選大王 (約瑟夫環問題)
一群猴子要選新猴王。新猴王的選擇方法是 讓n只候選猴子圍成一圈,從某位置起順序編號為1 n號。從第1號開始報數,每輪從1報到3,凡報到3的猴子即退出圈子,接著又從緊鄰的下乙隻猴子開始同樣的報數。如此不斷迴圈,最後剩下的乙隻猴子就選為猴王。請問是原來第幾號猴子當選猴王?輸入在一行中給乙個正整數n 10...
PTA7 28 猴子選大王(約瑟夫環)
一群猴子要選新猴王。新猴王的選擇方法是 讓n只候選猴子圍成一圈,從某位置起順序編號為1 n號。從第1號開始報數,每輪從1報到3,凡報到3的猴子即退出圈子,接著又從緊鄰的下乙隻猴子開始同樣的報數。如此不斷迴圈,最後剩下的乙隻猴子就選為猴王。請問是原來第幾號猴子當選猴王?輸入在一行中給乙個正整數n 10...
猴子選大王問題(約瑟夫環)
一群猴子排成一圈,按1,2,n依次編號。然後從第1只開始數,數到第m只,把它踢出圈,從它後面再開始數,再數到第m只,在把它踢出去 如此不停的進行下去,直到最後只剩下乙隻猴子為止,那只猴子就叫做大王。要求程式設計模擬此過程,輸入m n,輸出最後那個大王的編號。function monkey monke...