信息
- ID
- 1612
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 1
- 标签
- 递交数
- 10
- 已通过
- 1
- 上传者
我们只需要对其小小地变形:
i=1∑nj=1∑⌊in⌋k∣i∑jmkmμ(k)=i=1∑nk∣i∑(kmμ(k)j=1∑⌊in⌋jm)交换求和符号:
=k=1∑nk∣i∑(kmμ(k)j=1∑⌊in⌋jm)=k=1∑n(kmμ(k)k∣i∑j=1∑⌊in⌋jm)我们画一个图:横轴表示i,纵轴表示j,令(i,j)这个点的贡献为jm,那么最里面的求和符号,就是计算第i列的所有点的贡献之和。
这是从i的视角,我们不妨从j的视角这样看,我们发现,第j行最右侧的点横坐标是⌊jn⌋,它的每k个距离有1份贡献,那么总共有⌊k⌊jn⌋⌋=⌊jkn⌋个贡献。 所以
k=1∑n(kmμ(k)k∣i∑j=1∑⌊in⌋jm)=1≤j,k≤n∑(jmkm⌊jkn⌋μ(k))换x=jk,x>n时右边显然为0,所以只需要对1≤x≤n求和,k为x的因数。
=1≤x≤n,k∣x∑xm⌊xn⌋μ(k)=1≤x≤n∑(xm⌊xn⌋k∣x∑μ(k))根据莫比乌斯函数的性质:
k∣x∑μ(k)=[x=1]意思是只有x=1时,值是1,其他时候都是0. 代入得:
=1≤x≤n∑(xm⌊xn⌋[x=1])=n所以这个式子答案是n. 输出n mod p即可: