Считалочка с использованием списка - C#

Узнай цену своей работы

Формулировка задачи:

«Считалка». N ребят стоят по кругу. Начав отсчет от первого, удаляют каждого К-го, смыкая круг после каждого удаления. Определить, кто остался последним. удаляет элемент,начиная с 0 индекса. Т.е. нужно удалить сначала третий элемент,а потом пятый и получается вот: 1 2 4 5 6 7 8 9 10 //удалился 3 элемент,начиная от начала. 1 2 4 5 7 8 9 10 // удалился 5 элемент,опять с начального элемента. а нужно,чтоб удалялось с выбранного предыдущего элемента,т.е 1 2 4 5 6 7 8 9 10 //удалился 3 элемент,начиная от начала. 1 2 4 5 6 7 8 10 // удалился 5 элемент,начиная от четверки
class Program
    {
        
        static void Main(string[] args)
        {    
            Console.WriteLine("Задайте количество в кругу");
            int N = Convert.ToInt32(Console.ReadLine());
            int K;

            List<int> Players = new List<int>(N);
            
            for (int i = 0; i <=(N-1); i++)
            {
                Players.Insert(i, (i + 1));
            }

            for (int i = 0; i <= Players.Count+1; i++)
            {
                Console.WriteLine();  
                Console.WriteLine("Введите номер игрока,которого будете удалять");
                K = Convert.ToInt32(Console.ReadLine());
                K--;
                if (K < Players.Count)
                    
                {
                    Players.RemoveAt(K);
                }
 
                else
                {
                    Console.WriteLine("Этот игрок уже удален");
                    i--;
                }
                Console.WriteLine("Оставшиеся");
                foreach (int j in Players)
                {
                    Console.Write(j + " ");
                }
            }
               
            Console.ReadLine();
        }
    }

Решение задачи: «Считалочка с использованием списка»

textual
Листинг программы
using System;
using System.Linq;
using System.Collections.Generic;
 
public class Test
{
    public static void Main()
    {
        int n = 10;
        int k = 3;
        var ring = new List<int>(Enumerable.Range(1, n));
        for (var ki = --k; ring.Count != 1; ki = (ki + k) % ring.Count)
            ring.RemoveAt(ki);
        Console.WriteLine(ring[0]);
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы