Description
兔子躲进了n个环形分布的洞的某一个中。狼在第1个洞中没找到兔子,就间隔1个洞,到第3个洞中去找,也没找到兔子,就间隔2个洞,到第6个洞中去找。以后狼每次多隔1个洞去找兔子,……。这样狼一直找不到兔子,编程序计算兔子可能躲在哪个洞中。
Input
洞窟的数目n
Output
兔子可能藏的洞的编号。从1开始 (答案后换行回车)
Sample Input
10
Sample Output
2 4 7 9
KEY:用循环链表Source:
#include<iostream>
using namespace std;
struct node
...{
int num;
int swap;
node *next;
};
int n;
node *head;
void fun()
...{
int i;
head=new(node);
head->num=1;
head->swap=1;
node *q=head,*p;
for(i=2;i<=n;i++)
...{
p=new(node);
p->num=i;
p->swap=0;
q->next=p;
q=p;
}
p->next=head;
int m;
p=head;
for(m=1;m<=10000;m++)
...{
for(i=1;i<=m+1;i++) p=p->next;
p->swap=1;
}
}
int main()
...{
cin>>n;
fun();
int i;
node *p=head;
for(i=1;i<=n;p=p->next,i++)
...{
if(p->swap!=1) cout<<p->num<<" ";
}
cout<<endl;
}
![]()