2. 設計一分區停電程式

while (true)
{
    Console.Write("N=");
    int N = int.Parse(Console.ReadLine());

    var c = new List<int>();
    for (int i = 1; i <= N; i++)
        c.Add(i);

    int M = 1;
    while (true)
    {
        var list = new List<int>(c);
        var newList = new List<int>();
        newList.Add(list[0]);
        list.RemoveAt(0);
        int k = 1;
        int i = -1;
        while (list.Count != 0)
        {
            i++;
            i %= list.Count;

            if (k == M)
            {
                newList.Add(list[i]);
                list.RemoveAt(i);
                k = 1;
                i--;
            }
            else k++;
        }
        //Console.WriteLine("M=" + string.Join(" ", newList));

        if (newList.Last() == 13)
        {
            Console.WriteLine("M=" + M);
            break;
        }
        M++;
    }
}

Last updated