P3768 简单的数学题
题目描述
输入一个整数 (n) 和一个整数 (p),你需要求出:
[largeleft(sum_{i=1}^nsum_{j=1}^n ij gcd(i,j)
ight) mod p
]
其中 (gcd(a,b)) 表示 (a) 与 (b) 的最大公约数。
数据范围
(n leq 10^{10}, 5 imes 10^8 leq p leq 1.1 imes 10^9) 且 (p) 为质数。
解题思路
先推一波式子
[large sum_{i=1}^nsum_{j=1}^n ij gcd(i,j)\
large = sum_{d=1}^ndsum_{i=1}^{frac nd}sum_{j=1}^{frac nd} ijd^2 [gcd(i,j)=1]\
large = sum_{d=1}^nd^3sum_{k=1}^{frac nd}mu(k)k^2sum_{i=1}^{frac n{dk}}sum_{j=1}^{frac n{dk}} ij\
large = sum_{T=1}^nT^2sum_{k|T}mu(k)frac Tksum_{i=1}^{frac n{T}}sum_{j=1}^{frac n{T}} ij\
large = sum_{T=1}^nT^2varphi(T)sum_{i=1}^{frac n{T}}sum_{j=1}^{frac n{T}} ij\
large = sum_{T=1}^nSum(frac nT)^2(T^2varphi(T))\
]
后面的可以杜教筛,前面的整除分块即可