您的位置:首页 > 其它

有N个灯放在一排,N个人进行操作,求灯泡最后的状态

2017-03-24 14:08 92 查看
题:

有N个灯放在一排,从1到N依次顺序编号。有N个人,也从1到N顺序编号。1号将灯全部关闭,2号将凡是2的倍数的灯全部打开;3号将3的倍数的灯全部作相反操作(该灯如为打开,则将它关闭;如关闭,则将灯打开)。以后的人,都和3号操作一样,将凡是自己序号倍数的灯作相反操作。

编程实现:

第N个人操作后,按顺序输出灯的状态(1表示等打开,0表示灯关闭)。

输入:

N(1<=N<=2000000),灯的个数

输出:

灯的状态,用01序列表示,中间无空格

输入示例:

2

输出示例:

01

代码 如下:

import java.util.Scanner;

public class DengPao {

public static void main(String[] args) {

Scanner s = new Scanner(System.in);
int n = s.nextInt();
int[] arr = new int[n+1];
int k=1;
//1表示灯泡为开,初始状态所有灯泡都是开,第一个人操作之后全变为关
for(int i=1; i<=n; i++){
arr[i]=0;
}

//从第二个人开始循环
for(int i=2; i<=n; i++){
k = i;
while(k % i == 0 && k < n){//k表示当前数,判断k是否是i的倍数,且k<n
if(arr[k] == 0)
arr[k] = 1;
else
arr[k] = 0;

k++;
}

k = 1;
}

//输出灯泡状态
for(int i=1; i<=n; i++){
System.out.print(arr[i]);
}

s.close();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐