首页 > 代码库 > 一道有点意思的逻辑题

一道有点意思的逻辑题

题目大概是这样:小孩玩游戏,手拉手围成一个圈,然后数数.每次数到3的时候这个小孩退出,下一个从1开始再数. 试问,如果有500个小孩,最后剩下的小孩是原来的第多少个小孩.

开始想的时候觉得很有意思,然后就试着写代码实现。试了几种写法,先发一个比较满意的

public class ChildThreeDel    {        public static void main(String[] args)        {            bool[] arr = new bool[500];            for (int i = 0; i < arr.Length; i++)            {                arr[i] = true;            }            int _count = arr.Length;            int countNum = 0;            int index = 0;            while (_count > 1)            {                if (arr[index] == true)                {                    countNum++;                    if (countNum == 3)                    {                        countNum = 0;                        arr[index] = false;                        leftCount--;                    }                }                index++;                if (index == arr.Length)                {                    index = 0;                }            }            for (int i = 0; i < arr.Length; i++)            {                if (arr[i] == true)                {                    Console.WriteLine(i+1);                }            }            Console.Read();        }    }

 

一道有点意思的逻辑题