围绕着山顶有10个圆形排列的洞,狐狸要吃兔子,兔子说:“可以,但必须先找到我,我就藏身于这十个洞中的某个洞。你从第1个洞找,下次隔1个洞(即2号洞)找,第三次隔2个洞(即5号洞)找,再隔3个…以后在这个圆圈中如此类推,次数不限。”但狐狸从早到晚进进出出了1000次,仍没有找到兔子。
问兔子究竟藏在几号洞里?
(不止一个)
- /*****************************************************************************/
- /*围绕着山顶有10个圆形排列的洞,狐狸要吃兔子,兔子说:“可以,但必须先找到我 */
- /*,我就藏身于这十个洞中的某个洞。你从第1个洞找,下次隔1个洞(即2号洞)找,*/
- /*第三次隔2个洞(即5号洞)找,再隔3个…以后在这个圆圈中如此类推,次数不限。 */
- /*”但狐狸从早到晚进进出出了1000次,仍没有找到兔子。 */
- /* 作者:Darges */
- /*****************************************************************************/
- #include <stdio.h>
- void main()
- {
- int hide[10]={0}; //建立数据结构,10个洞放在一个一维10元素的数组里
- int i,times=0;
- for(i=0;i<1000;i++)
- {
- times+=i;
- hide[times%10]=1; //对兔子洞进行遍历,遍历过的置1 ,将洞i设为1,表示编号为i的洞已经搜索了,最后对10取余,是为了不超出10的范围,比如搜索完9号洞后,加上3是12,12%10=2,下一个就搜索2号洞
- }
- for(i=0;i<10;i++)
- {
- printf("%d ",hide[i]);
- }
- printf("\n兔子可以藏在的洞:");
- for(i=0;i<10;i++)
- {
- if(0==hide[i])
- {
- printf("%d ",i+1);
- }
- }
- printf("\n");
- }