出圈-java

题目描述:
设有n个人围坐一圈并按顺时针方向从1到n编号,从第1个人开始进行1到m的报数,报数到第个m人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所剩下一人为止。

输入:
输入多行,每行2个数,分别表示n和m.

输出:
计算每一行中最后剩下这个人的编号.

样例输入:
10 3
10 4

样例输出:
4
5

全部代码:

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while(sc.hasNext()){
		int n = sc.nextInt();
		int m = sc.nextInt();
		boolean[] persons = all(n,m);
		for(int i=0; i<persons.length; i++)
		{
		    if(persons[i])
		    {
		        System.out.println(i+1);
		    }
		}
		}	
	}
	public static boolean[] all(int n,int m){
	    boolean[] persons = new boolean[n];
	    int number=n,key=0;
	    for(int i=0;i<n;i++)
	    {
	        persons[i]=true;
	    }
	    while(number!=1)
	    {
	        for(int i=0; i<n; i++)
	        {
	            if(!persons[i])
	            {
	                continue;
	            }
	            else
	            {
	                key++;
	                if(key%m==0)
	                {
	                    persons[i]=false;
	                    key=0;
	                }
	            }
	        }
	        number=0;
	        for(int i=0; i<n; i++)
	        {
	            if(persons[i])
	            {
	                number++;
	            }
	        }
	    }
	    return persons;
	}
}

出圈-java

上一篇:genl netlink


下一篇:leetcode-27. 移除元素-js快慢指针法