100 Door Puzzle
问题重述:
There are 100 doors in a long hallway. They are all closed. The first time you walk by each door, you open it. The second time around, you close every second door (since they are all opened). On the third pass you stop at every third door and open it if it’s closed, close it if it’s open. On the fourth pass, you take action on every fourth door. You repeat this pattern for 100 passes.
Question: At the end of 100 passes, what doors are opened and what doors are closed?
分析与解答:
这个问题没想通的觉得不难但是很繁,想通了觉得既不难也不繁。主要的想法就是说某编号的门如果被经过了奇数次,则门的状态与起始状态相反;如果被经过了偶数次,则门的状态与起始状态相同。
那么通用的做法是看该门编号对应的数能被多少数整除(除数要小于趟数)。如果除数个数是奇数则判定门的状态为起始状态的相反状态;否则,判定门的状态为起始状态。
这边,要不要这么做呢?wait……马克思爷爷曾经教导我们说:“具体问题具体分析!”。这个问题有什么具体情况呢?那就是:本题的趟数是和门数一致的。也就是说,只要看门的编号能被多少数整除就行了,不必担心需要除数小于等于趟数的限制条件。这样,我们就可以有一个条件了:那就是某个数的两个因子都在限制范围内。我们又发现,只要某个数能表示成两个因子的乘积,而这两个因子又互不相同,那么这两趟算是白跑啦,对门的状态没有影响。那么对门的状态有影响的,就是那两个因子相同的情况。这样,问题的解就是哪些编号为完全平方数的门啦!!!
自此,答案显而易见,状态有变的门的编号为:1,4,9,16,25,36,49,64,81,100。
参考文献:
1. http://classic-puzzles.blogspot.com/2008/05/door-toggling-puzzle-or-100-doors.html
2. http://www.theodorenguyen-cao.com/2008/02/02/puzzle-100-doors/
100 Door Puzzle的更多相关文章
- Coursera Algorithms Programming Assignment 4: 8 Puzzle (100分)
题目原文:http://coursera.cs.princeton.edu/algs4/assignments/8puzzle.html 题目要求:设计一个程序解决8 puzzle问题以及该问题的推广 ...
- POJ1651Multiplication Puzzle[区间DP]
Multiplication Puzzle Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8737 Accepted: ...
- poj 1651 Multiplication Puzzle (区间dp)
题目链接:http://poj.org/problem?id=1651 Description The multiplication puzzle is played with a row of ca ...
- Ignatius's puzzle
Ignatius's puzzle Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- POJ1651Multiplication Puzzle(矩阵链乘变形)
Multiplication Puzzle Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8040 Accepted: ...
- POJ1651:Multiplication Puzzle(区间DP)
Description The multiplication puzzle is played with a row of cards, each containing a single positi ...
- HDOJ 1098 Ignatius's puzzle
Problem Description Ignatius is poor at math,he falls across a puzzle problem,so he has no choice bu ...
- UESTC_Eight Puzzle 2015 UESTC Training for Search Algorithm & String<Problem F>
F - Eight Puzzle Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) ...
- codeforces A. Orchestra B. Island Puzzle
A. Orchestra time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
随机推荐
- 【巩固】bootstrap笔记二
这段主要记录如何给排版完的页面加一些动画效果,用到了的插件有: wow.min.js jquery.singlePageNav.min.js animate.css 将导航条上对应的菜单和页面上对应的 ...
- Android学习笔记(十二)
Fragment是一种可以嵌入在活动当中的UI片段,它能让程序更加合理和充分地利用大屏幕的空间. 碎片的简单用法:新建一个FragmentTest项目,然后新建一个左侧碎片布局left_fragmen ...
- android sdk manager 代理设置(送给牛逼的)
解决android sdk更新慢的问题(公司竟然把sdk更新给墙了). 第一步:如下图 第二部:进入代理设置页面,进行设置.如下图
- SQL存储过程-新增和修改,参数Xml数据类型
输入参数:xml数据类型 功能:新增和修改 --value() 方法从 XML 中检索 rogue 属性值.然后将该值分配给 int 变量. --将 Member 节点拆分成多行 SELECT T ...
- JSP+Servlet中使用jspsmartupload.jar进行图片上传下载
JSP+Servlet中使用cos.jar进行图片上传 upload.jsp <form action="FileServlet" method="post&quo ...
- PHP二维码生成的方法(google APi,PHP类库,libqrencode等)
原文地址: http://blog.csdn.net/liuxinmingcode/article/details/7910975 ================================== ...
- Dynamics AX Hostory
现在谈起Dynamics AX,在微软Dynamics系列产品当中,作为最受瞩目和最有前景的Dynamics套装产品线,很多人也许只知道它曾经由于资本市场的上市和并购,前后经历了三个“东家”.对于它长 ...
- Java陷阱之assert关键字
Java陷阱之assert关键字 一.概述 在C和C++语言中都有assert关键,表示断言. 在Java中,同样也有assert关键字,表示断言,用法和含义都差不多. 二.语法 在J ...
- win10 MySQL启动失败问题
系统升级到win10之后,本地装的MySQL却突然不能启动,系统显示明明就有,可是总是启动失败.在这里解决一下: 解决win10 mysql服务消失,连接不上的问题,注意:以管理员身份运行DOS命令 ...
- PHP左、右、内连接
left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录.right join :右连接,返回右表中所有的记录以及左表中连接字段相等的记录.inner join: 内连接,又 ...