2、已知n個人(以編號1,2,3...n分別表示)圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列; * 他的下一個人又從1開始報數,數到m的那個人又出列;依此規律重複下去,直
阿新 • • 發佈:2021-02-04
題目:
/*
- 2、已知n個人(以編號1,2,3…n分別表示)圍坐在一張圓桌周圍。從編為k的人開始報數,數到m的那個人出列; 他的下一個人又從1開始報數,數到m的那個人又出列;依此規律重複下去,直到圓桌周圍的人全部出列。
輸入:n= 9,k= 1, m=5
輸出:5,1,7,4,3,6,9,2,8
*/
public class Two127 { public static void main(String[] args) { System.out.println("人數n:起點k:間隔m:(空格隔開三個資料)"); Scanner scanner = new Scanner(System.in); String s = scanner.nextLine(); scanner.close(); String nkm[] = s.split(" "); int n = Integer.parseInt(nkm[0]); //人數n int k = Integer.parseInt(nkm[1]); //起點k int m = Integer.parseInt(nkm[2]); //間隔m int [] people=new int[n]; //用來裝人編碼的陣列 for (int i = 0; i < people.length; i++) { //初始化這個陣列 people [i]=i+1; } int a=k+m-2; //第一個開始出列的人 System.out.print("結果為:"); while (n>0) { String mString=","; if (n==1) { mString=" "; } System.out.print(people[a]+mString); for (int i = a; i < n-1; i++) { people [i]=people[i+1]; //將這個人之後的前移一位; } n=n-1; //人數減一個 if(n!=0) { a=(a+m-1)%n; //用取餘來實現第m個之後的人 } } } }