题目 : 有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(); }