JAVA关与开关灯

JAVA关与开关灯

拉灯问题:

		说 有100个房间 每个房间有1盏灯 这些灯都是灭的
		还有100个人
			第一个人 来到每个房间前 1、2345678910
				如果房间编号能够整除1(人的编号)
				则 拉一下灯
			第二个人 来到每个房间前 2、4、6、8、10、
				如果房间编号能够整除2(人的编号)
				则 拉一下灯                                        
			第三个人 来到每个房间前3、6、9、
				如果房间编号能够整除3(人的编号)
				则 拉一下灯
			......

		问:当100个人都拉完灯之后 哪些灯是亮的?

代码

//第一种
public static void B(){
   	boolean []islamp=new boolean[100];
   	for(int b=0;b<100;b++){
   	   islamp[b]=false;
   	 }
   	for(int i=1;i<=100;i++){
   	  for(int a=1;a<=100;a++){
   	    if(a%i==0){
   		  islamp[a-1]=!islamp[a-1];
   		 }
   	   }
   	 }
       for(int c=0;c<islamp.length;c++){
   		if(islamp[c]){
   			System.out.println("开着的灯是:"+(c+1));
   			}
   		}
   	}
//第二种
public static void F(){
   	//初始灯是灭的
   	//一个房间奇数次进入,灯为亮的,偶数次进入灯为灭的;
   	 for(int i=1;i<=100;i++){//房间
   	   int count=0;
   	   for(int b=1;b<=100;b++){//人
   		  if(i%b==0){
   		   count++;
   		  }
   		}
   	 if(count%2==1){
   	  System.out.println(i+"灯亮的");
   	   }
   	 }
   }
//第三种
public static void E(){
          //1、-1
          //直接找倍数
          //当人的编码为4的时候123不需要在进行判断,只需要判断4(人的编码)的倍数
          int[]a=new int[100];
          for(int i=0;i<a.length;i++){
   		   a[i]=-1;
   		   }
          for(int i=1;i<=100;i++){
   	   		  for(int b=i;b<=100;b+=i){
   	   			  a[b-1]=a[b-1]*(-1);
   	   		   }
   	 }
   	   for(int c=0;c<a.length;c++){
   	 			if(a[c]==1){
   	 				System.out.println("开着的灯是:"+(c+1));
   	 				}
   		}
   }
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值