狐狸抓兔子 问题
围绕着山顶有10个圆形排列的洞,狐狸要吃兔子,兔子说:“可以,但必须先找到我,我就藏身于这十个洞中的某个洞。你从1号洞找,下次隔1个洞(即3号洞)找,第三次隔2个洞(即6号洞)找,再隔3个…以后在这个圆圈中如此类推,次数不限。”但狐狸从早到晚进进出出了1000次,仍没有找到兔子。
问兔子究竟藏在哪个洞里?
#include <stdio.h>
void main()
{
int a[10] = {1,};
int i = 0;
//int j = 0;
//int flag ;
printf("%d \n",a[0]);
for(i = 0;i < 1000;i++)
{
if(i <100)
a[i+1] = a[i] + (i+2);
if(a[i+1] > 9)
{
a[i+1] = a[i+1] % 10;
//flag = 0;
}
printf("%d ",a[i+1]);
printf("\n");
}
}
写到这 输出的是 狐狸进过的洞。但是要的是狐狸没进过的洞。再怎么写啊? 哪位大神帮帮忙。我是新手。
[最优解释]
/*
围绕着山顶有10个圆形排列的洞,狐狸要吃兔子,兔子说:“可以,但必须先找到我,我就藏身于这十个洞中的某个洞。
你从1号洞找,下次隔1个洞(即3号洞)找,第三次隔2个洞(即6号洞)找,再隔3个…以后在这个圆圈中如此类推,
次数不限。”但狐狸从早到晚进进出出了1000次,仍没有找到兔子。
问兔子究竟藏在哪个洞里?
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int index,hole,result;
int loop[11]={0};
hole=0;
for(index=1;index<=1000;index++)
{
hole+=index;
result=hole%10+1;
loop[result]++;
}
printf("结果是:\n");
for(index=1;index<=10;index++)
{
if(loop[index]==0)
{
printf("%d\n",index);
}
}
return 0;
}
#define N 10//假设有十个洞
void main()
{
int a[N]={0},i,k=0;//定义"1"代表狼进去过"0"代表狼没进去过.
for(i=0;i<1000;)
{
a[k]=1;
i++;
k=(k+i+1)%N;//用K表示出狼依次要进入的洞的号码"0 ~ N-1"
}
printf("兔子可以在");
for(i=0;i<N;i++)
if(a[i]==0)//最后还是0的 表示这个洞狼没进去过,是安全的.
printf("%2d ",i+1);
printf("号洞中的任意一个\n");
}