2727551894

导航

 

 题目 : 有n(正整数)个数排成一列,一个挨一个报数,当报的数能被x(x>0)整除时,移除该数,直到数列中只有一个数,求该数的一开始的位置

 解答

 public static int Demo(int n, int x)
        {
            if (n <= 0)
            {
                throw new Exception("n为正整数,请输入正确的数字");
            }
            if (x <= 0)
            {
                throw new Exception("x必须大于0,请输入正确的数字");
            }
            var queue = new Queue<int>();
            for (int i = 1; i <= n; i++)
            {
                queue.Enqueue(i);
            }
            var times = 1; // 这是报的数
            while (queue.Count >= 2)
            {
                var temp = queue.Dequeue();
                if (times % x != 0) //能被x整除的移除队列,不能整除的再加入队列
                {
                    queue.Enqueue(temp);
                }
                times++;
            }
            return queue.Dequeue();
        }

 

posted on 2015-07-14 09:33  xmj112288  阅读(391)  评论(0编辑  收藏  举报