携程算法笔试

选择题10道,一题2分
编程题4道,一题20分

第一题是求n!的个位数,很明显n>=5之后都是0了

第二题是给定n,m<=1e18,要求一个最大的k,使得n可以被拆成k个素数之和,且奇素数的个数是m的倍数,考虑如果用大于等于7的素数,永远可以拆成一堆2+一个3,依然保持奇素数个数不变,所以导出结论:最优分解中一定是x个2和y*m个3这样的结构,那么考虑x*2+y*m*3=n,得到x=(n-3*m*y)/2,目标x+m*y就变成了(n-m*y)/2,其中x>=0,y>0,所有数都整数,所以判断答案是(n-m)/2还是(n-2m)/2还是无解即可

第三题必须python,要求用scikit-learn处理一个训练集/测试集,做无监督聚类,完全不会,根本没用过

第四题给定一个长度为n(<=1e5)的数组a,一个正整数q(<=1e5),接着是q个询问x(<=5e5),每次询问要求输出sum(a[i]) for i&x==i,考虑枚举子集预处理答案,首先求maxbit使得2^maxbit大于n,枚举子集处理所有2^maxbit状态,一定覆盖所有的i,然后对于询问x,其求和等价于x与2^maxbit–1按位与之后再求和,而这个和是预处理过的,直接输出即可,枚举子集的复杂度是maxbit*2^maxbit,也就是nlogn,不会超时
#携程# #携程笔试#
全部评论
选择题?我落下题了吗!!
点赞 回复 分享
发布于 今天 16:59 北京
开放面是4道编程,1、2、4一样,3是一道前缀和的题
点赞 回复 分享
发布于 今天 16:29 江苏

相关推荐

昨天 21:22
门头沟学院 Java
从0到java大王:这就是大厂笔试题吗,感觉比平时刷的力扣难,要么是数学题要么是看着比较复杂的题,只会第一道题,第四道题暴力直接超市,二三看了会就放弃了
点赞 评论 收藏
分享
评论
4
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务