題目:
有 N 個燈放在一排,從 1 到 N 依次順序編號。有 N 個人也從 1 到 N 依次編號。1 號將燈全部關閉, 2 將凡是 2 的倍數的燈打開; 3 號將凡是 3 的倍數的燈作相反處理(該燈如爲打開的, 則將它關閉;如關閉的,則將它打開)。以後的人都和 3 號一樣,將凡是自己編號倍數的燈作相反處理。
解法如下:
import java.util.Scanner;
public class Light {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int n,i=1,k,count=0;
boolean arr[];
while(cin.hasNext()){
n = cin.nextInt(); //接收輸入的N個人
arr= new boolean[n];
for(i=1;i<=n;i++){
arr[i-1]=true;
}
//第n個人進行操作
for(i=1;i<=n;i++){
//第k個燈
for(k=1;k<=n;k++){
if(k%i==0){
arr[k-1]=!arr[k-1];
}
}
}
System.out.println("下面是亮着的燈:");
for(i=1;i<=n;i++){
if(arr[i-1]){
System.out.print(i+" ");
count++;
if(count%4==0){
System.out.println();
}
}
}
System.out.println();
}
}
}