围绕着山顶有10个圆形排列的洞,狐狸要吃兔子,兔子说:“可以,但必须找到我,我就藏身于这十个洞中,你先到1号洞找,第二次隔1个洞(即3号洞)找,第三次隔2个洞(即6号洞)找,以后如此类推,次数不限。”但狐狸从早到晚进进出出了1000次,仍没有找到兔子。问兔子究竟藏在哪个洞里?
#include "stdio.h"
#include "stdlib.h"
#define OK 1
#define OVERFLOW -2
typedef int status;
typedef int ElemType;
#define LIST_INIT_SIZE 10
typedef struct {
ElemType *elem;
int length;
int listsize;
}SqList;
status InitList_Sq(SqList *L){
(*L).elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!((*L).elem)) return OVERFLOW;
(*L).length=0;
(*L).listsize=LIST_INIT_SIZE;
return OK;
} //InitList_Sq
status Rabbit(SqList *L){
int i,current=0;
for(i=0;i<LIST_INIT_SIZE;i++)
(*L).elem[i]=1;
(*L).elem[LIST_INIT_SIZE-1]=0;
(*L).elem[0]=0;
for(i=2;i<=1000;i++){
current=(current+i)%LIST_INIT_SIZE;
(*L).elem[current]=0;
}
printf("\n兔子可能藏在如下的洞中:") ;
for(i=0;i<LIST_INIT_SIZE;i++)
if((*L).elem[i]==1)
printf(" \n此洞是第%d号洞 !",i+1);
return OK;
}
void main(){
SqList *L=( SqList *)malloc(sizeof(SqList));
InitList_Sq(L);
Rabbit(L);
}