题目:0,1,2,,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。
思路:定义一个关于n和m的方程f(n,m),表示每次在n个数字中删除第m个数字最后剩下的数字。
f(n,m)=[f(n-1,m)+m]%n,n>1;
=0, n=1;
int LastRemaining_Solution2(unsigned int n, unsigned int m)
{
if(n < 1 || m < 1)
return -1;
int last = 0;
for (int i = 2; i <= n; i ++)
last = (last + m) % i;
return last;
}