有100个人,分别编号(1到100的序号),然后依次报号,a、b、c,数到c的排除在该队列外,循环报号,最后只省一人,请问该人的序号是多少?(可以用任何语言)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Example
{
class Program
{
static LinkedList<Person> persons;
static void Main(string[] args)
{
InitPersons();
System.Console.WriteLine("最后一个人为:"+GetPerson(persons.First).Name);
System.Console.Read();
}
private static void InitPersons()
{
persons = new LinkedList<Person>();
for (int i = 0; i < 100; i++)
{
persons.AddLast(new Person() {Name="name"+(i+1)});
}
}
private static Person GetPerson(LinkedListNode<Person> A)
{
var B = A.Next == null ? persons.First : A.Next;
var C = B.Next == null ? persons.First : B.Next;
var AN = C.Next == null ? persons.First : C.Next;
persons.Remove(C);
if (persons.Count == 1) return persons.First.Value;
return GetPerson(AN);
}
}
public class Person
{
public String Name { get; set; }
}
}