yay 发表于 2017-2-22 17:07
运行结果正确,代码看不懂。。。
从第三个箱子看。第三个箱子可能碰3次,实际是碰2次,第二次碰不到,就是3%1==0(第一次)和3%3==0(第三次),第四次开始根本就不会再对3号箱子做开关(所以j的取值就是1~i),所以就是每次触碰到箱子的成立条件就是i%j==0,没操作一次计K+1次,K是奇数那箱子就是打开的咯
66666
余欲渔 发表于 2017-2-23 14:19
从第三个箱子看。第三个箱子可能碰3次,实际是碰2次,第二次碰不到,就是3%1==0(第一次)和3%3==0(第三 ...
对的,分析完全正确{:10_256:}
余欲渔 发表于 2017-2-23 14:19
从第三个箱子看。第三个箱子可能碰3次,实际是碰2次,第二次碰不到,就是3%1==0(第一次)和3%3==0(第三 ...
明白了,谢谢!您好厉害,思路清奇,哈哈。
看看源代码学习学习
看看怎么做
#用的字典结构,和前面各位大侠的方法不一样
dic={}
n=0
for i in range(1,101):
dic=0
for i in range(1,101):
for j in range(1,101):
if i*j<=101:
dic+=1;
for i in range(1,101):
if dic%2==1:
print("第%d个箱子是开着的"%i)
n+=1;
print ("一共%d个箱子开着"%n)
{:5_106:}
看下答案
膜拜
学习
dd
66666
看看高手怎么解题的
天啊,一定要学习!
6666
## 打开为True, 关闭为False
## 求第n轮后box的状态
def box_status(n):
box = []
if n == 1:
box = * 100
if n > 1:
box = box_status(n-1)
# 从第n个箱子开始(即box开始,每隔n个箱子转换状态。
for i in range(n - 1, 100, n):
box = not box
return box
box = box_status(100)
opened_box = 0
for i in range(100):
if box:
print('box-',i+1,'is open.')
opened_box += 1
print('Totally %d boxed are open' % opened_box)
>>>
box- 1 is open.
box- 4 is open.
box- 9 is open.
box- 16 is open.
box- 25 is open.
box- 36 is open.
box- 49 is open.
box- 64 is open.
box- 81 is open.
box- 100 is open.
Totally 10 boxed are open
本帖最后由 qaz123765 于 2017-6-30 23:27 编辑
#0 open; 1 close
a=
for i in range(2,101):
for j in range(1,101):
if j%i==0:
a=1 if a==0 else 0
for i in range(100):
if a==0:
print("Each open box in %d"%(i+1))
print('total box opened:%d'%a.count(0))
不会~
{:10_266:}
谢谢分享