一个学校有100个储物柜和100个学生。所有的储物柜在上学的第一天都是关着的。随着学生进入,第一个学生S1打开了每个柜子。第二个学生S2从第二个柜子L2开始,关闭相隔1的柜子。学生3(S3)从第三个柜子L3改变每第三个柜子的状态(关闭改打开,打开改关闭)。S4从L4开始改变每第4个柜子状态。S5从L5开始改变每第5个柜子状态,一次类推,直到学生S100改变L100为止。
在所有学生都经过教学楼并且改变柜子之后,哪些柜子是开着的?显示所有打开的储物柜号,以一个空格隔开
提示:使用包含100个布尔型元素的数组,每个元素都表明一个柜子是开的(true)还是关的(false)。初始时所有的柜子都是关的。
package pack2;public class Suitcase {public static void main(String[] args) {suitcase();}/**储物柜难题*/public static void suitcase() {boolean[] suitcases = new boolean[100];for (int i = 0; i < suitcases.length; i++) for (int j = 0; j < suitcases.length; j++) if((j + 1) % (i + 1) == 0) //以每个学生的倍数确定值suitcases[j] = suitcases[j] ? false : true;for (int i = 0; i < suitcases.length; i++) if(suitcases[i])System.out.print(" "+i);}
}