圓桌上圍坐著2n個人,其中n個人是好人,另外n個人是壞人,如果從第一個人開始數數,數到第m個人,則立即處死該人;然后從被處死的人之后開始數數,再將數到的第m個人處死……依此方法不斷處死圍坐在圓桌上的人,試問預先應如何安排這些好人與壞人的座位,能使得在處死n個人之后,圓桌上圍坐的剩余的n個人全是好人,
Input多組資料,每組資料輸入:好人和壞人的人數n(<=32767)、步長m(<=32767);Output對于每一組資料,輸出2n個大寫字母,‘G’表示好人,‘B’表示壞人,50個字母為一行,不允許出現空白字符,相鄰資料間留有一空行,Sample Input
2 3 2 4
Sample Output
GBBG BGGB
思路: 可以先處理得到好人的下標,這樣就差個輸出;輸出注意,50個字母一行,最后還不換行需要特判一下;還要注意每組資料換行
代碼:
import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner scan=new Scanner(System.in); while(scan.hasNext()){ int n=scan.nextInt(); int m=scan.nextInt(); ArrayList<Integer> v=new ArrayList<>(); for(int i=0;i<2*n;i++) v.add(i); //移除壞人,留下好人 int pos=0; while(v.size()>n){ pos=(pos+m-1)%v.size(); v.remove(pos); } //輸出 int k=0; for(int i=0;i<2*n;i++){ if(i>0 && i%50==0) System.out.println(); if(k<v.size() && v.get(k)==i){ k++; System.out.print('G'); } else System.out.print('B'); } System.out.println(); if(2*n%50!=0) System.out.println(); } } }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/103927.html
標籤:其他
下一篇:ping耗服務器資源么?
