数値を間隔で繰り返し削除

1036 ワード

坊主殺し問題!王は100人の和尚を殺す.この100人のお坊さんを1~100番に編みます(java筆記試験)
Javaの筆記試験の問題は、王が100人の和尚を殺すということだ.この100人のお坊さんを1~100番に編みます.王には100人を大きな円に囲むルールがある.1番和尚さんから、5まで数えたら殺して、殺された和尚さんの次から1を数えて、5まで数えて殺して、このままずっと殺して、番号を聞いて何番の和尚さんが生きていますか?つまり1つだけ生きていて、それは何番ですか?
public static void main(String[] args) {
		List list = new ArrayList();
		for (int i = 1; i <= 10; i++)
			list.add(i);
		//     1-5
		int i = 1;
		//      ,    
		while (list.size() > 1) {
			//    list
			for (int j = 0; j < list.size(); j++) {
				if (i == 5) {
					//     
					System.out.println(list.get(j));
					list.remove(j);
					//     ,      ,  -1
					j--;
					//       ,         ,       
					if (i > list.size()) {
						i = 1;
						break;
					}
					//    1  ,       1   ,  ++,    i=0,       1
					i = 0;
				}
				i++;
			}
		}
		System.out.println("result:" + list.get(0));
	}