Считалочка: Определить номер последнего, оставшегося в круге - C#
Формулировка задачи:
N ребят расположены по кругу. (Каждому присвоен номер по порядку). Начав отсчёт от первого, удаляют каждого k-ого, смыкая при этом круг. Определить номер последнего, оставшегося в круге. ()
Решение задачи: «Считалочка: Определить номер последнего, оставшегося в круге»
textual
Листинг программы
using System;
class Program
{
static void Main()
{
int n = 8;
int k = 3;
bool[] guys = new bool[n];
int remCount = 0;
for (int i = 0; i < k && guys.Length - remCount > 1; i++)
for (int j = i; j < guys.Length && guys.Length - remCount > 1; j += k, remCount++)
guys[j] = true;
for (int i = guys.Length - 1; i >= 0; i--)
if (!guys[i])
{
Console.WriteLine("Выбран {0}! (считая от 0)", i);
break;
}
Console.ReadKey();
}
}