当前位置:网站首页>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
边栏推荐
猜你喜欢
随机推荐
Wechat applet positioning and ranging through low-power Bluetooth device (2)
关于密匙传递的安全性和数字签名
1256:献给阿尔吉侬的花束
Call wechat customer service applet
修改ddt生成的测试用例名称
SPC简介
Wechat applet initializes Bluetooth, searches nearby Bluetooth devices and connects designated Bluetooth (I)
Ptorch classical convolutional neural network lenet
查询2013年到2021年的数据,只查询到2020的数据,遇到了这个问题所进行的解决办法
SQL数据库
Business case | how to promote the activity of sports and health app users? It is enough to do these points well
Elmo (bilstm-crf + Elmo) (conll-2003 named entity recognition NER)
L2-024 tribe (25 points)
STM32学习记录0007——新建工程(基于寄存器版)
mysql新表,自增id长达20位,原因竟是......
不同时间类型的执行计划计算
1256: bouquet for algenon
PATH环境变量
switch使用(微信小程序)
微信小程序与低功耗蓝牙通信-接受硬件端发送来的数据(四)