当前位置:网站首页>1到100号的灯开关问题
1到100号的灯开关问题
2022-04-23 14:04:00 【学海无涯乐做舟】
有1到100号的灯,一开始全部点亮。每盏灯都有独立的开关,且开关只有“开”和“关”两种状态。
第一次把所有1的倍数灯的开关按一次,第二次把所有2的倍数灯的开关按一下,一直到第一百次把所有100的倍数灯的开关按一下。
问,此时还有多少灯灭着?
一、Java编程解决
package test;
import java.util.ArrayList;
import java.util.List;
public class lamp1_100 {
public static void main(String[] args){
int count=0;
List<Integer> dd = new ArrayList<Integer>();
// 默认所有的灯开着
for(int i=0;i<100;i++){
dd.add(1);
}
// 操作所有的灯
for(int k=1;k<=100;k++){
//对k的倍数的灯进行操作如果是关设置成开 如果是开设置成关
for(int t=1;t<=100/k;t++){
if(dd.get((k*t)-1)==0){
dd.set((k*t)-1,1);
}else{
dd.set((k*t)-1,0);
}
}
}
// 计算灭灯的灯的个数
for(int i=0;i<100;i++){
if(dd.get(i)==0){
count++;
System.out.println("剩余灭的灯的索引:"+ i);
}
}
System.out.println("剩余灭的灯的个数:"+count);
}
}
二、python字典解决
灯泡有两种状态:开和关,用 -1代表关,用1代表开。每次操作后,状态上乘以-1。
on ---> 1 off ---> -1
dic = {k:1 for k in range(1,101)}
def lanm(n):
for i in range(1,n+1):
for x in dic:
if x%i == 0:
dic[x] = int(dic[x])*-1
return dic
num = len({k: v for k,v in lanm(100).items() if v == 1})
print(f"There are {num} lights on.")
#There are 10 lights on.
三、python列表
lamp = []
#默认100盏灯都是开的
for i in range(100):
lamp.append(1)
#循环100个灯
for k in range(1,101):
i = 0
#对k的倍数的灯进行开关操作
while i <= 100/k:
if lamp[(i*k)-1] == 0:
lamp[(i * k) - 1] = 1
else:
lamp[(i*k)-1]=0
i += 1
#count = len([i for i in lamp if i==0])
count = 0
for i in range(0,100):
if lamp[i] == 0:
count +=1
print(f"灭灯的位置{i+1}")
print(f"灭灯的数量{count}")
版权声明
本文为[学海无涯乐做舟]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_41918841/article/details/107406038
边栏推荐
猜你喜欢
随机推荐
1256: bouquet for algenon
JS force deduction brush question 102 Sequence traversal of binary tree
趣谈网络协议
Jmeter安装教程以及我遇到的问题的解决办法
Three point positioning based on ibeacons (wechat applet)
基于ibeacons三点定位(微信小程序)
Easyexcel读取excel表地理位置数据,按中文拼音排序
mysql新表,自增id长达20位,原因竟是......
读了一篇博客,重新理解闭包整理一下
生产环境——
初识go语言
查询2013年到2021年的数据,只查询到2020的数据,遇到了这个问题所进行的解决办法
JS 力扣刷题 102. 二叉树的层序遍历
Record a strange bug: component copy after cache component jump
Nifi 快速安装及文件同步操作
MySQL 修改主数据库
微信小程序与低功耗蓝牙通信-往硬件端发送数据(三)
pthread_self()为何重复了
Choreographer full resolution
Mock测试