LightOJ - 1236 数论好题

跑来csdn写一下题解 不然老师又说不更新。。。。。。。。。。。
i = 1 n j = 1 n [ l c m ( i , j ) = n ] \sum_{i=1}^n \sum_{j=1}^n [lcm(i,j)=n] \quad \quad
嘛,让你求这个式子。。。。
看了题解后才发现直接分解质因数就好了。。。。。。。。。
嘛,不过我也推导了一个类似分解质因数的做法

i = 1 n j = 1 n [ l c m ( i , j ) = n ] \sum_{i=1}^n \sum_{j=1}^n [lcm(i,j)=n] \quad \quad
= i = 1 n j = 1 n [ i g c d ( i , j ) j g c d ( i , j ) = n g c d ( i , j ) ] =\sum_{i=1}^n \sum_{j=1}^n [ \frac{i}{gcd(i,j)} \quad*\frac{j}{gcd(i,j)} \quad = \frac{n}{gcd(i,j)} \quad ] \quad \quad
这步很显然 直接根据小学奥数 lcm等价与两数之积除与他们的gcd
然后你就可以考虑 底下这个gcd的性质的
n g c d ( i , j ) n|gcd(i,j)
嘛,用反演那套(遇事不对 枚举gcd)
于是就有这个式子
= k n   i = 1 n j = 1 n [ i k j k = n k [ g c d ( i , j ) = k ] ] =\sum_{k|n} \ \sum_{i=1}^n \sum_{j=1}^n [ \frac{i}{k} \quad*\frac{j}{k} \quad = \frac{n}{k} [gcd(i,j)=k]\quad ] \quad \quad \quad
再来一下
= k n   i = 1 n / k j = 1 n / k [ i j = n k ] [ g c d ( i , j ) = 1 ] =\sum_{k|n} \ \sum_{i=1}^{n/k 向下取整} \sum_{j=1}^{n/k 向下取整} [ i*j = \frac{n}{k}\quad] [gcd(i,j)=1]\quad \quad \quad \quad

然后容易发现 i×j = n/k那块好优化
于是乎接着来

= k n   p k n [ g c d ( p , n / k / p ) = 1 ] =\sum_{k|n} \ \sum_{p*k|n}[gcd(p,n/k/p)=1]\quad \quad
= k n   p k n [ g c d ( p , n / k ) = p ] =\sum_{k|n} \ \sum_{p*k|n}[gcd(p,n/k)=p]\quad \quad
这一步可能有点绕。。。。。。
实际上是这样的 你把倒数第二个式子化一下 会发现。。。。。。gcd哪里很难搞。。。
于是你可以考虑 放 缩
就有的最后的那个狮子
然后可以发现 n/k一定是p的倍数
然后你就可以化成这样
= k n   p k n 1 =\sum_{k|n} \ \sum_{p*k|n}1\quad \quad
于是就可以解决了,,,,,代码我没写。。。。嘛。。。重思维。。。

正解 据说是直接分解质因数。。。。。。
不过本质上还是我的这个式子。。。。。。

自闭中-----------

发布了80 篇原创文章 · 获赞 3 · 访问量 1770

猜你喜欢

转载自blog.csdn.net/qq_41567618/article/details/104506747