查看: 5815|回复: 94

[逻辑推理] 第二版杀拉的五题串烧

改编  已解决  简洁模式
发表于 2015-2-3 22:37:51 发帖际遇
本帖最后由 shalamixi 于 2015-2-6 09:31 编辑
接下来我会陆续放出5道逻辑题
题目难度和类型会和我的《第一版杀拉五题串烧》相似,地址是 http://www.tuilixy.net/forum.php?mod=redirect&goto=findpost&ptid=39027&pid=406101
每解答出一道题我才会放出下一道题。
题目难度不一,涉及领域也不尽相同,有的会被秒掉的吧……
下面放出第一题……(求秒,求人气……)
楼主| 发表于 2015-2-3 22:38:14 发帖际遇
1房间内有100盏灯,房间外有100个开关。开关和灯一一对应。只有进房间之后才知道,哪个灯亮着。如果一个人想把哪个灯和对应哪个开关弄全部弄清楚,至少需要进房间几次?
(只考虑灯的光效应和热效应)
(灯泡发热需要的时间足够长,发热的时间也足够长。)
(灯无故障)
发表于 2015-2-4 01:11:14
5次
因为3^4<100<3^5
登录帐号可查看完整回帖内容
发表于 2015-2-4 09:11:11
首先,不考虑发热,只考虑开关..我觉得只有如此才是恰当的数学题..虽然lz好像不愿如此..
每次进入时仅能分辨开关,即每次都是拆分成两个子集,熟知二分可以做到,需要ceil(log(100))=7次.

然后,我们考虑lz的意思:(只考虑灯的光效应和热效应)(灯泡发热需要的时间足够长,发热的时间也足够长。)??
意思是可以考虑发热了?
显然,不考虑发热的话,一次只能按是否亮分辨两个;而我们熟知的一个日经题要求分辨三个,则是利用发热.
事实上仅看是否发光是否发热显然可以分辨4个.所以将上一结论改成四分,可知需要ceil(log[4](100))=4次.

我说完了吗,不,还没..秉承一贯的吐槽属性,我们提出真相:
假设进入时开关达到稳定状态,那么发光状态是只有双值的;然而,热效应跟电的大小啦通电时间啦断电时间啦啥的都有关系,并不是一个简单的双值,而可以认为有一个连续的取值范围.
理论上来讲,做到任意多个温度的梯度是可行的.
通俗点讲结论就是,就算不考虑发光只考虑发热,再多的灯也只需要一次.
再通俗一点讲做法,在外头先开第一个,过恰当时机开第二个,过恰当时机开第三个,...,直到全都开了,然后进去按温度排序即可.
登录帐号可查看完整回帖内容
发表于 2015-2-4 09:40:45
为什么是4次~难道乌鸦叔脑子转不过弯了嘛~
一次能分辨4盏灯~不能应该25次吗~
登录帐号可查看完整回帖内容
楼主| 发表于 2015-2-4 09:51:44 发帖际遇
本题由天马行空答对
一共四种状态,每次可以把灯泡分成4组
4的三次方=64<100<256=4的四次方
则辨别100个灯泡只需要4次进入房间

2一个游戏中,抛出色子(色子有1到6),抛出多少前进多少格。某玩家前进到第10格了,他从游戏开始之后抛出的色子顺序,有多少种可能?
登录帐号可查看完整回帖内容
发表于 2015-2-4 11:23:04
本帖最后由 天马行空 于 2015-2-4 14:33 编辑
第二题..也就是和为10的由1到6组成的有序数组的个数..
用生成函数来讲,也就是1+A+A^2+A^3+A^4+...=1/(1-A)中x^10的系数,其中A=x+x^2+x^3+x^4+x^5+x^6.
将A/(1-A)拆成部分分式可得到通项公式,但1-A是不可约的六次式..故..
没啥好方法,就是死算.
反正算出来就是1+1*x+2*x^2+4*x^3+8*x^4+16*x^5+32*x^6+63*x^7+125*x^8+248*x^9+492*x^10+976*x^11+1936*x^12+...
总之,答案是492,并且一般来讲这个问题没有什么特别好的方法.

为了避免有人看不懂..我们来换一个说法..直接说递推..
记"若干次加起来是n"的方法种数是f(n),于是要求的就是f(10).
f(n)=0(n<0),f(0)=1,f(n)=f(n-1)+f(n-2)+f(n-3)+f(n-4)+f(n-5)+f(n-6).
(ps.知道fibonacci吧..就是那些兔子啦爬楼梯啦那种112358的数列啦..跟这个是一样的..只是这个多几项而已..)
于是10这种规模就直接手算吧..
012345678910
11248163263125248492
可以看到和上头的答案是吻合的.(11个数都一样.)
线性递推,有通项公式,同样是要解没简单解的六次方程.
登录帐号可查看完整回帖内容
楼主| 发表于 2015-2-4 13:39:44
第二题还是由天马行空回答正确
答案是492,方法也讲对了

3有两堆棋子,一堆50个,一堆100个。有两个玩家,轮流拿棋子。拿棋子的规则是:从一堆中拿任意数目个,或者从两堆中拿相同数目个。拿到最后一个棋子的玩家获得胜利。那么,第一个玩家怎么拿,就能一定获得胜利?
发表于 2015-2-4 14:22:54
本帖最后由 天马行空 于 2015-2-4 14:36 编辑
第三题.
先说结论吧.败局状态集L={{[na],[nb]}|n为自然数},其中a=(1+sqrt(5))/2,b=(3+sqrt(5))/2,[.]为高斯函数/gauss/下取整函数/int/截尾函数/trunc/地板函数/floor(爱咋叫咋叫吧..).
于是{50,81}是败局.从100中取走19即为第一步的正解.

下面稍微多说一点点..
观察{[na]},{[nb]}这两个数列:
首先由beatty定理知这两个数列无重复的覆盖了自然数集(0除外).(相关证明如若想要自行搜索.)
ps.数列的单调性则是显然的.
其次,不难证明[na]+n=[nb].(反正,假定数列满足beatty定理的形式,由此式亦可算出对应的系数(指之前的黄金数).)

然后稍微说下这的确是L的证明:
首先,其中两两间显然不能转化:
没有重复数,故取一堆不能转化;差也不重复,故同时取两堆亦不可转化.
其次,不属于L的任一状态{x,y}(x<=y)均可转化为L中状态:
记(x,z)为L的元素,则z<>y.
若z<y,将{x,y}取为{x,z}即可;否则,将{x,y}取为{p,q}={[(y-x)a],[(y-x)b]}即可(由z-x>y-x知p<a,q<b)(注意到q-p=b-a).

另附半个月前qq中写的伪代码,仅供参考:
  1. input a,b
  2. x=(sqrt(5)+1)/2
  3. if a>b
  4.         swap(a,b)
  5. t=[(b-a)*x]
  6. if t=a
  7.         ret LOSE
  8. if t<a
  9.         ret (t,b-a+t)
  10. t=[(a+1)*(x-1)]
  11. if a<t*x
  12.         ret (a,a+t)
  13. t=[(a+1)*(2-x)]
  14. ret (a-t,a)
复制代码
ps.说到qq那么问题就来了..我当时是在对谁说的呢..没错就是lz..
登录帐号可查看完整回帖内容
发表于 2015-2-4 16:07:34
什么鬼
这种题专业性太强了吧,让我这种数学弱智怎么办?
逻辑跟数学虽然关联是最强的,可惜我的数学很弱,完了...
数学里面我稍微在行一点的就是几何,杀拉来点跟几何有关系的题我试试吧
登录帐号可查看完整回帖内容
返回版块
123
尚未登录
您需要登录后才可以回帖 登录 | 加入学院