2016滴滴出行研发工程师笔试题(亮灯问题)

本文介绍了2016年滴滴出行研发工程师笔试中的一道题目,涉及2015盏灯的亮灯问题。通过数学分析,得出只有被按下奇数次开关的灯才会亮,即求平方数的数量。最终答案为44个,对应选项B。此外,文章提到此题源于LeetCode的【319. Bulb Switcher】,并指出大公司面试常考算法题。
摘要由CSDN通过智能技术生成

最近又想搞即时通讯又想搞网络框架,然而都没弄出来,博客也有几天没有更新了,不过每周面试题还是得照常继续的。

一、题目

2015盏灯,一开始全部熄灭,序号分别是1-2015,先把1的倍数序号的灯的开关全部按一次,然后把2的倍数的灯的开关全部按一次,然后把3的倍数的开关按一次,以此类推,最后把2015的倍数灯的开关按一次。问最后亮着的灯有多少盏?

A. 43
B. 44
C. 45
D. 46

二、解题

咋一看,这不是数学问题吗?干脆用数学解了。

先来分析一下,因为一开始的时候 2015 盏灯都是熄灭的,按一次灯就开了, 按两次灯就熄灭了,由此可以知道只有按过奇数次的灯才可能是亮着的,题目中还有一个信息,就是把 1 的倍数的灯按一次,把 2 倍数的灯按一次,把 3 倍数的灯按一次,如此类推,这不就是求每个数的公约数吗?因此结合第一第二个条件,我们就可以把题目演化成求1-2015中有哪些数的公约数是奇数个的。如:1 , 4, 9 , 16….. (注:一个数的约数必然包括1及其本身) 这样算还是比较麻烦,我们可以继续把题目演化,求哪些数的公约数是奇数个其实也就是求哪些数是平方数,为什么呢?因为约数都是成对出现的,平方数是由两个相同的约数得到的,但是算个数是只算一个。偶数加奇数是奇数。所以只有平方数才有奇数个约数。最后,问题就变得

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值