A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ancheng 中级黑马   /  2016-9-16 12:33  /  654 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

[Java] 纯文本查看 复制代码
import java.util.Arrays;
import java.util.Scanner;

/*
 * 开灯问题:
 * 	有n盏灯,编号为1-n。第1个人把所有的灯都打开,第2个人按下所有编号为2的倍数的开关(这些灯将被
 * 关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关掉),以此类推,
 * 一共有k个人,问最后有哪些等开着?输入n和k,输出开着的灯的编号。k<<n<<100.
 */
public class Main {

	private static Scanner sc;

	public static void main(String[] args) {

		sc = new Scanner(System.in);
		boolean first = true;
		int n = sc.nextInt();
		int k = sc.nextInt();

		int[] a = new int[n + 1];
		Arrays.fill(a, 0);
		
		for (int i = 1; i <= k; i++) {
			for (int j = 1; j <= n; j++) {
				if (j % i == 0) {
					a[j] = ~a[j];
				}
			}
		}
		
	
		for (int i = 1; i <= n; i++) {
			if (a[i] != 0) {
				if (first) {
					first = false;
				} else {
					System.out.print(" ");
				}
				System.out.print(i);
			}
		}

	}

}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马