[CareerCup] 6.6 Toggle Lockers 切换锁的状态

简介:

6.6 There are 100 closed lockers in a hallway. A man begins by opening all 100 lockers. Next, he closes every second locker. Then, on his third pass, he toggles every third locker (closes it if it is open or opens it if it is closed). This process continues for 100 passes, such that on each pass i, the man toggles every ith locker. After his 100th pass in the hallway, in which he toggles only locker #100, how many lockers are open?

这道题说一个走廊上有100个闭合的锁,首先一个人走过去打开所有的锁,第二次他切换2的倍数的锁的状态,第三次他切换3的倍数的锁的状态,第n次他切换n的倍数的锁的状态,以此类推直到100次遍历后,问我们有多少个锁的状态是打开的。

看到这类的应用题,我不禁想起来了国内的被骂的很惨的数学题,比如有个蓄水池,以啥啥啥速度往里进水,又以啥啥啥速度排水,问多长时间能蓄满或是排空,要么就是有两个人相向而行,中间有条狗,以匀速往返跑,求两人相遇后狗跑了几个来回等等之类的题,很多实用主义者痛批此类题毫无实际意义,其实也不必那么较真,就是练练脑子而已,看人家国外不也用此类的题目来面试嘛。

那么我们来看这道题吧,还是先枚举个小例子来分析下,比如只有5个锁的情况,'X'表示关闭,‘√’表示打开,如下所示:

初始状态:    X    X    X    X    X

第一次:      √    √    √    √    √

第二次:      √     X    √    X    √

第三次:      √     X    X    X    √

第四次:      √     X    X    √    √

第五次:      √     X    X    √    X

那么最后我们发现五次遍历后,只有1号和4号锁是打开的,而且很巧的是它们都是平方数,是巧合吗,还是其中有什么玄机。我们仔细想想,对于第n个锁,只有当次数是n的因子的之后,才能改变锁的状态,即n能被当前次数整除,比如当n为36时,它的因数有(1,36), (2,18), (3,12), (4,9), (6,6), 可以看到前四个括号里成对出现的因数各不相同,括号中前面的数改变了锁状态,后面的数又变回去了,等于锁的状态没有发生变化,只有最后那个(6,6),在次数6的时候改变了一次状态,没有对应其它的状态能将其变回去了,所以锁就一直是打开状态的。所以所有平方数都有这么一个相等的因数对,即所有平方数的锁都将会是打开的状态。

本文转自博客园Grandyang的博客,原文链接:切换锁的状态[CareerCup] 6.6 Toggle Lockers ,如需转载请自行联系原博主。

相关文章
|
安全 Java
【JavaSE专栏76】三态和五态,线程的不同状态:新建、运行、状态、阻塞、等待、计时等待状态
【JavaSE专栏76】三态和五态,线程的不同状态:新建、运行、状态、阻塞、等待、计时等待状态
103 0
|
4月前
|
前端开发 C++
css实用技巧——锁定页面,禁止滚动 vs 解锁页面,恢复滚动
css实用技巧——锁定页面,禁止滚动 vs 解锁页面,恢复滚动
215 0
|
5月前
|
前端开发 JavaScript
如何模拟一个元素(如一个链接 <a>)被禁用(disabled)的状态
如何模拟一个元素(如一个链接 <a>)被禁用(disabled)的状态
30 0
|
6月前
|
设计模式 C#
36.c#:如何设置MDL窗口
36.c#:如何设置MDL窗口
52 1
|
Java 调度
线程状态的含义与切换条件
线程调用了 Object.wait() 方法或相关方法,或者处于无限期等待或定时等待状态,等待其他线程的通知或一段时间的过去。
94 0
|
JavaScript
js全屏、退出全屏、判断是否处于全屏状态
js全屏、退出全屏、判断是否处于全屏状态
329 0
|
自然语言处理 JavaScript Nacos
获取checkbox选中状态的两种方式_张童瑶的博客
我在开发项目的时候遇到这个问题,就是循环表格,表格里面嵌有checkbox复选框格式,这时候就有个需求了,如何获取checkbox选中状态?后来我经过去网上一番搜寻,也没有找到答案,网上有很多人都是复制别人,拿过来自己的,很多都是抄别人的,所以经过我自己一番研究,提供了两种获取checkbox方法,有助于帮助大家问题。
624 0
|
Java uml
16图,一个state竟然搞出了这么多并发锁
16图,一个state竟然搞出了这么多并发锁
16图,一个state竟然搞出了这么多并发锁
|
存储
SAP WM 如何理解使用LT0G撤销TO时系统出现的锁的标志
SAP WM 如何理解使用LT0G撤销TO时系统出现的锁的标志   http://mp.weixin.qq.com/s/qsDd_ffojh6C1M9YiShmJQ     我们在使用LT0G对TO做撤销的时候,系统有的时候会在这一行的行头显示一个锁的标志,有的时候就没有。
2418 0
|
Android开发
Android软键盘状态的切换及其强制隐藏
MainActivity如下:package cc.c; import android.os.Bundle; import android.view.
851 0