老甲鱼与小甲鱼 发表于 2017-7-7 13:10:59

看答案

老甲鱼与小甲鱼 发表于 2017-7-7 13:29:37

a =
for i in range(1,101):
    ii = i
    while i <= 100:
      a = 1 - a
      i += ii
print(a)
for each in a.copy():
    if each == 1:
      print('Box {} is open.'.format(a.index(each)+1))
      a = 0

shigure_takimi 发表于 2017-12-3 23:44:23

本帖最后由 shigure_takimi 于 2017-12-3 23:58 编辑

#关着为False,打开为True。
boxes =
for i in range(1,101):
    for index in range(i-1,len(boxes),i):
      boxes = not boxes
print("Totally",sum(boxes),"boxes are opened!")
for i in range(len(boxes)):
    if boxes:
      print("box -", (i+1),"is opened!")

#Totally 10 boxes are opened!
#box - 1 is opened!
#box - 4 is opened!
#box - 9 is opened!
#box - 16 is opened!
#box - 25 is opened!
#box - 36 is opened!
#box - 49 is opened!
#box - 64 is opened!
#box - 81 is opened!
#box - 100 is opened!
#和自己半年前写的相比简洁多了。
#放了一段时间,前两天重新拾起来,却好像反而比以前进步了。

sherryhhh 发表于 2018-3-26 20:45:11

谢谢~

晓屁屁 发表于 2018-3-26 20:55:48

想看

tsembrace 发表于 2018-3-26 22:04:10

'''
走廊上有100个关上的储物柜。有个人先是将100个柜子全都打开。接着,每数两个柜子关上一个。
然后,在第三轮时,再每隔两个就切换第三个柜子的开关状态(也就是将关上的柜子打开,将打开的关上)。
照此规律反复操作100次,在第i轮,这个人会每数i个就切换第i个柜子的状态。
当第100轮经过走廊时,只切换第100个柜子的开关状态,此时有几个柜子是开着的?分别是哪几个箱子?
'''
box=*100
for i in range(1,101):
    for j in range(100):
      if (j+1)%i==0:
            if box==1:
                box=0
            else:
                box=1
for i in range(100):
    if box==1:
      print('第%d个箱子是开着的。'% (i+1))

phthon_yw 发表于 2018-3-27 13:56:17

看一看

白昼 发表于 2018-3-31 11:12:35

66666666666

shen162 发表于 2018-4-12 23:50:39

学习

ABC23 发表于 2018-4-22 22:10:08

回复

ABC23 发表于 2018-4-22 23:56:08

package practice;

import java.util.ArrayList;

class Box {
        boolean open;

        protected Box(boolean open) {
                this.open = open;
        }

        public boolean getStat() {
                return this.open;
        }

        public void shift() {
                this.open = !this.open;
        }
}

public class Main {

        public static void main(String[] args) {
                ArrayList<Box> al = new ArrayList<>(100);
               
                for (int i = 0; i < 100; i++) {
                        al.add(new Box(true));
                }

                for(int round=1;round<=100;round++) {
                        int j = 0;
                        while(j<100) {
                                al.get(j).shift();
                                j += round;
                        }
                }
               
                for(int i=0;i<al.size();i++) {
                        if(al.get(i).getStat()) {
                                System.out.print((i+1)+" ");
                        }
                }
               
        }

}
=================================
这是我用Java写的,结果不对。
大家帮忙看看错在哪里了?

九九八十一 发表于 2019-2-9 17:27:26

{:5_102:}

浪荡客 发表于 2019-4-15 20:42:34

0

akinomoya 发表于 2020-7-12 19:26:31

safsaf 发表于 2021-2-1 20:23:22

good

soljax 发表于 2021-2-10 08:35:22

牛逼

渣男不配恋爱 发表于 2021-2-10 10:07:05

厉害

basketmn 发表于 2021-2-10 19:05:08

不会,看看学习下

自得其乐 发表于 2021-2-10 19:40:31

题都读不清楚,哎
来凑热闹。。。。。。。。。。

拾柒不在 发表于 2021-11-8 21:18:23

hh

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