钉钉笔试第二题理解

输入n个数,每次操作可以将一个数乘以2,另一个数除以2(向下取整),判断是否能够操作若干次,使得所有数都相等?

解法:将所有数字的次方幂相加,看能不能整除n。(中间有想过这个解法,但是没深想验证这个想法,觉得不会这么简单)

比如 3, 7, 12。 (1 + 2 + 3) % 3 = 0, 可以操作成功。

为什么这样是正确:
任何一个数,都是2^x余一部分,那么除以2共x次,最后肯定会变为1,再反过来乘以2共x次,就会变为2^x,不再拥有余数。
所以如果输入中有些数不是刚好是2的幂,就可以用这种方式转换为2的幂
主要考察的是对数学的敏感程度,没什么算法
全部评论
还真是,这题我猜的,没想到就ac了
点赞 回复 分享
发布于 2024-03-23 16:27 安徽
所以为啥整除n就可以了
点赞 回复 分享
发布于 2024-03-23 16:51 香港
厉害
点赞 回复 分享
发布于 2024-03-23 17:16 上海

相关推荐

今天 14:40
浙江大学 设计
无语😓 就喜欢找我茬,研究生怎么了 研究生就是天才吗 就得所有报告文件都会,最烦做表
我推的MK:是这样的,那些领导就是自己什么都不懂就把所有东西扔给你,指望白嫖你的劳动力,如果你的表现不如预期就启动攻击学历模式,这都学不会是怎么考上浙大的
点赞 评论 收藏
分享
03-12 15:34
已编辑
北京邮电大学 Java
呓语0613:老哥你这黑马点评改造是在哪里看的
点赞 评论 收藏
分享
评论
点赞
4
分享

创作者周榜

更多
牛客网
牛客企业服务