首页 > 试题广场 >

圆圈上顺时针排列着 1,2,3 , ......n 这 n

[问答题]

圆圈上顺时针排列着 1,2,3 ......n n 个数,从 1 开始,顺时针隔一个拿走一个,问最后剩下是哪一个数字。

约瑟夫问题:
    for (i=2; i<=n; i++)
{
s=(s+2)%i;
}

最后s的值就是剩下的数的值
发表于 2017-02-26 22:38:39 回复(0)
public static int getLastNum(int n, int m){
	if(n < 1 || m < 1){
		return -1;
	}
	int index = 0;
	for(int i = 2; i < n; i++){
		index = (index + m) % i;
	}
	return index;
}

发表于 2023-06-21 19:18:00 回复(0)
public class Solution {
    public static int LastRemaining(int n,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+1;
    }
    public static void main(String[] args) {
    	int out = LastRemaining(4,1);
    	System.out.println(out);
    }
 
}

发表于 2017-05-16 16:43:11 回复(0)