第136章 不,你的这条才是(1/3)
在配对的过程中,徐佑也考虑到了,2和5出现的数量问题。
无疑,2的个数一定是多于5的个数的。
这样一来,问题就变成了,统计阶乘数里有多少個5这个因子。
“等一下……像25、125这样的数字,里面其实是包含不止一个5的因子的。”
徐佑很快注意到了这一重要的问题。
如果忽略这个情况,那最后的结果就会出现错误。
最终,徐佑在电脑上,编辑出了短短的五行代码,并给彭俊发送了过去。
“不错啊!”
在看到徐佑发来的代码后,彭俊也不禁对徐佑的解答表示着肯定。
虽然这道题不算什么难题。
但能在几分钟的时间内,给出如此漂亮的答案。
彭俊知道,大部分计算机专业的本科生,也是未必能做到的。
“这孩子,应该是自己做出来的吧。”
彭俊相信,既然徐佑向自己寻求题目,按理说肯定不会去搜索答案的。
但为了进一步确定徐佑的能力,彭俊决定,再给徐佑出一个难题,还是那种网上根本搜不到的题目。
“不错,做得很好,代码也很简洁。再给你发一道难度更大的题目吧。”
这一次,彭俊将一道自己改编过的题目,向徐佑发送了过去。
看着这道新的题目,徐佑很快陷入到思考之中。
“给出k个有序的数组:l1,l2,……,lk,每一个长度为n,可以对该数组进行线性时间的预处理。然后回答如下询问:给出x,回答每个数组中第一个小于x的元素是什么?”
这一次,徐佑也确实感到了,题目难度的提升。
要是徐佑这些天没有学完这些门课程的话,估计是连题目都看不懂的。
徐佑首先想到的方法,是对于每个数组二分查找。
但这样的话,复杂度会非常高,达到了o(klogn)。
很快,徐佑便找到了另外的一个思路。
“如果用fraal-cascadg的话,就可以将复杂度降低到o(k+logn)了。”
所谓的fraal-cascadg,也就是分散层叠算法,可以对经典分块问题进行大大的优化。
按照这个思路,徐佑重新进行算法的构思,并很快整理出了一套全新的方案。
“这样一来,只要第一次使用二分,之后每次都是常数查找就可以了。”
完成
本章未完,点击下一页继续阅读。