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

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

全部评论

相关推荐

点赞 评论 收藏
分享
06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
能干的三文鱼刷了10...:公司可能有弄嵌入式需要会画pcb的需求,而且pcb能快速直观看出一个人某方面的实力。看看是否有面试资格。问你问题也能ai出来,pcb这东西能作假概率不高
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-10 12:10
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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