#include<cstdio>
#include<iostream>
using namespace std;
struct node{
int num;
node *next;
};
int main(void){
int n,k,m=0;
node *p,*q,*head;
cin>>n>>k;
head=new node;//给head分配内存地址并指向这个新的内存地址
head->next=NULL;
head->num=1;
q=head;//生成头结点
for(int i=2;i<=n;i++){
p=new node;//生成新节点
p->next=NULL;
p->num=i;
q->next=p;//前一个节点与当前节点产生关系
q=p;//前一个节点的指针指向当前节点
}
q->next=head;//最后一个节点指向头节点,产生单向链表关系。
p=head;
//当下一个地址等于自己则是最后一只猴子
while(p->next!=p){
m++;//报数
if(m==k){
//相等则输出
cout<<p->num<<" ";
//出圈,重新产生新的链接
q->next=p->next;
p=p->next;
m=0;//重新开始报数
}else{
q=p;
p=p->next;
}
}
cout<<p->num<<endl;//一定不要忘记输出最后一只猴子。
return 0;
}
全部回复 共 0 条
还没有人回复。往下写第一条。
发表回复
登录后即可回复本帖,与出题人和同学一起讨论。
登录