钉钉笔试第二题理解
输入n个数,每次操作可以将一个数乘以2,另一个数除以2(向下取整),判断是否能够操作若干次,使得所有数都相等?
解法:将所有数字的次方幂相加,看能不能整除n。(中间有想过这个解法,但是没深想验证这个想法,觉得不会这么简单)
比如 3, 7, 12。 (1 + 2 + 3) % 3 = 0, 可以操作成功。
为什么这样是正确:
任何一个数,都是2^x余一部分,那么除以2共x次,最后肯定会变为1,再反过来乘以2共x次,就会变为2^x,不再拥有余数。
所以如果输入中有些数不是刚好是2的幂,就可以用这种方式转换为2的幂
主要考察的是对数学的敏感程度,没什么算法
解法:将所有数字的次方幂相加,看能不能整除n。(中间有想过这个解法,但是没深想验证这个想法,觉得不会这么简单)
比如 3, 7, 12。 (1 + 2 + 3) % 3 = 0, 可以操作成功。
为什么这样是正确:
任何一个数,都是2^x余一部分,那么除以2共x次,最后肯定会变为1,再反过来乘以2共x次,就会变为2^x,不再拥有余数。
所以如果输入中有些数不是刚好是2的幂,就可以用这种方式转换为2的幂
主要考察的是对数学的敏感程度,没什么算法
全部评论
厉害
所以为啥整除n就可以了

还真是,这题我猜的,没想到就ac了
相关推荐
点赞 评论 收藏
分享
06-04 10:32
安徽大学 单片机 实习僧和BOSS直聘都投了几十家,硬件开发,硬件测试,嵌入式都投了,全是已读不回……我现在考虑想在秋招前速成一个Linux项目,其实现在完全不知道自己要找什么方向的,只能海投了,求大佬们给点意见😭😭😭

点赞 评论 收藏
分享