華為南京研究所機考練習-電灯が点灯している個数

1396 ワード


電灯がついている個数
説明:
1本の廊下にはn(1≦n≦65535)個の電灯が順番に取り付けられており、最初から最後まで番号1、2、3、...n-1、nである.各電灯は1つの引張スイッチによって制御される.最初、電灯は全部消していました.n人の学生が廊下を通った.最初の学生は番号が1の倍数の電灯のスイッチを引いた.次に2番目の学生は番号が2の倍数の電灯のスイッチを引いた.次に3番目の学生は番号が3の倍数の電灯のスイッチを引いた.このように続けて、最後にn番目の学生は番号がnの倍数の電灯のスイッチを引いた.n人の学生がこの規定に従って歩いた後、廊下に電灯がいくつか点灯していた.注:電灯の数は学生の数と一致しています.
実行時間の制限:
制限なし
メモリの制限:
制限なし
入力:
電灯の数
出力:
点灯している電灯の数
サンプル入力:
3

サンプル出力:
1

構想分析:
シーンを直接シミュレートすればいいです.最初の問題に比べて、この問題の構想はもっと直接的です.
 
package com.liuhao;

import java.util.Scanner;

/**
 * @author liuhao
 */
public class Test2 {

	public static void main(String[] args) {

		//           
		int sum = 0;
		
		//      
		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		boolean[] booArr = new boolean[n];

		//      n      
		for(int stu=1; stu<=booArr.length; stu++){
			for(int i=1; i<=booArr.length; i++){
				if( i%stu == 0){
					booArr[i-1] = !booArr[i-1];
				}
			}
		}
		
		//          
		for(int i=0; i<booArr.length; i++){
			if(booArr[i] == true){
				sum++;
			}
		}
		
		System.out.println(sum);
	}
}