数论出题组比赛用题:公约数

T4:公约数

思考难度:提高?

代码难度:省选-?

算法1:暴力计算

实际得分:10

算法2:

首先 gcd ( i j , i k , j k ) = gcd ( i , j ) × gcd ( i , k ) × gcd ( j , k ) gcd ( i , j , k ) \gcd(i\cdot j,i\cdot k,j\cdot k)=\frac{\gcd(i,j)\times \gcd(i,k)\times \gcd(j,k)}{\gcd(i,j,k)} gcd(ij,ik,jk)=gcd(i,j,k)gcd(i,j)×gcd(i,k)×gcd(j,k)

所以原式 = i = 1 n j = 1 m k = 1 p ( gcd 2 ( i , j ) + gcd 2 ( i , k ) + g c d 2 ( j , k ) ) =\sum_{i=1}^n\sum_{j=1}^m\sum_{k=1}^p(\gcd^2(i,j)+\gcd^2(i,k)+gcd^2(j,k)) =i=1nj=1mk=1p(gcd2(i,j)+gcd2(i,k)+gcd2(j,k))

考虑一个式子 i = 1 n j = 1 m gcd 2 ( i , j ) = d = 1 min ( n , m ) x d d 2 μ ( x d ) \sum_{i=1}^n\sum_{j=1}^m\gcd^2(i,j)=\sum_{d=1}^{\min(n,m)}\sum_{x|d}d^2\mu\left(\frac{x}{d}\right) i=1nj=1mgcd2(i,j)=d=1min(n,m)xdd2μ(dx)

考虑对后面的 \sum 分块计算, O ( n + T n n ) O(n+T\cdot n\sqrt{n}) O(n+Tnn )

实际得分:30

算法3:

发现前面的 \sum 也可以分块, O ( n + T n ) O(n+T\cdot n) O(n+Tn)

实际得分:50

算法4:

考虑令 f ( x ) = x 2 , g ( x ) = μ ( x ) f(x)=x^2,g(x)=\mu\left({x}\right) f(x)=x2,g(x)=μ(x),计算这两个函数的狄利克雷卷积 h ( x ) h(x) h(x),再对 h ( x ) h(x) h(x)分块计算, O ( n + T n ) O(n+T\cdot \sqrt{n}) O(n+Tn )

实际得分:100

算法5:

杜教筛一下,把预处理复杂度由 O ( n ) O(n) O(n)降低为 O ( n 2 3 ) O(n^{\frac{2}{3}}) O(n32)我太懒了没有学杜教筛

实际得分:100

全部评论

相关推荐

来个大佬救一下,为上投了都是石沉大海了,没实习经历的话怕秋招直接进不了面。什么实习这么难找,基本
心态爆炸了:现在正式的岗位都少,实习基本不咋招的,除了大厂,中小企业其实没那么多岗位需求,就算是有,大多都是招一两个廉价劳动力,同时,他们也会希望你一来就能干活的,没时间培训你,就让你了解公司的项目,你了解完就可以开始干活。再者是,很多低质量的实习其实用处没有那么大的。我去年也是找实习找到破防,最后去了一家深圳的小公司实习,工作对我来说很简单,甚至不如我在学校做的项目,秋招的时候,这段实习经历也并没有帮上什么忙,投递简历,依旧非常低的回复率。低回复率是常态,尤其是找实习,找不到,那就把重心放在优化自己的简历和项目,多看八股文,锻炼自己的面试能力,多看别人的面经,自己模拟面试,等秋招的时候,只要有那么寥寥几次,好好抓住那几次机会。
点赞 评论 收藏
分享
05-23 20:31
已编辑
武汉大学 Java
内向的柠檬精在研究求...:注意把武大标粗标大 本地你俩不是乱杀
实习进度记录
点赞 评论 收藏
分享
能干的三文鱼刷了10...:公司可能有弄嵌入式需要会画pcb的需求,而且pcb能快速直观看出一个人某方面的实力。看看是否有面试资格。问你问题也能ai出来,pcb这东西能作假概率不高
点赞 评论 收藏
分享
这是什么操作什么意思,这公司我服了...
斯派克spark:意思是有比你更便宜的牛马了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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