余欲渔 发表于 2017-2-23 14:19:42

yay 发表于 2017-2-22 17:07
运行结果正确,代码看不懂。。。

从第三个箱子看。第三个箱子可能碰3次,实际是碰2次,第二次碰不到,就是3%1==0(第一次)和3%3==0(第三次),第四次开始根本就不会再对3号箱子做开关(所以j的取值就是1~i),所以就是每次触碰到箱子的成立条件就是i%j==0,没操作一次计K+1次,K是奇数那箱子就是打开的咯

oliver鱼丝 发表于 2017-2-23 16:32:52

66666

jerryxjr1220 发表于 2017-2-23 17:06:03

余欲渔 发表于 2017-2-23 14:19
从第三个箱子看。第三个箱子可能碰3次,实际是碰2次,第二次碰不到,就是3%1==0(第一次)和3%3==0(第三 ...

对的,分析完全正确{:10_256:}

yay 发表于 2017-2-23 23:33:23

余欲渔 发表于 2017-2-23 14:19
从第三个箱子看。第三个箱子可能碰3次,实际是碰2次,第二次碰不到,就是3%1==0(第一次)和3%3==0(第三 ...

明白了,谢谢!您好厉害,思路清奇,哈哈。

坑得飞起 发表于 2017-2-24 16:25:20

看看源代码学习学习

wangshuaiszo 发表于 2017-2-24 17:11:39

看看怎么做

luofan9 发表于 2017-2-25 12:02:14

#用的字典结构,和前面各位大侠的方法不一样
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)

该名字已被注册 发表于 2017-2-27 22:30:36

{:5_106:}

madao0505 发表于 2017-2-28 09:21:44

看下答案

哨子1122 发表于 2017-2-28 12:00:30

膜拜

佩恩是神 发表于 2017-2-28 16:36:56

学习

逗逼小龙 发表于 2017-2-28 23:36:02

dd

d20522012 发表于 2017-3-28 00:09:10

66666

shigure_takimi 发表于 2017-3-28 20:29:38

看看高手怎么解题的

新手·ing 发表于 2017-3-28 21:14:23

天啊,一定要学习!

FanFan=3= 发表于 2017-3-29 15:56:28

6666

shigure_takimi 发表于 2017-3-29 17:12:01

##    打开为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:26:46

本帖最后由 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))

没有土豆的洋芋 发表于 2017-7-6 10:17:22

不会~
{:10_266:}

stone1 发表于 2017-7-6 15:07:46

谢谢分享
页: 1 [2] 3 4
查看完整版本: python解一道有趣的智力题(开箱子)