using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace test30
{
//100个人围成一个圈,从1开始报数,报到14的这个人就要退出。然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人?
class Program
{
public static long Josephus(long n, long m, long start)
{ //参数分别为:人数,出圈步长,起使报数位置,
long k = 1;
for (long i = 2; i <= n; i++)
k = (k + m - 1) % i + 1;
return (k + start - 1) % n; //返回最后一人的位置
}
static void Main(string[] args)
{
long t=Josephus(3,3, 1);
Console.WriteLine(t);
Console.ReadKey();
}
}
}
这是一个高手做的,我是不懂,你参考一下 |