P3768 简单的数学题(杜教筛)

P3768 简单的数学题

题目描述

输入一个整数 \(n\) 和一个整数 \(p\),你需要求出:

\[\large\left(\sum_{i=1}^n\sum_{j=1}^n ij \gcd(i,j)\right) \mod p \]

其中 \(\gcd(a,b)\) 表示 \(a\)\(b\) 的最大公约数。

数据范围

\(n \leq 10^{10}, 5 \times 10^8 \leq p \leq 1.1 \times 10^9\)\(p\) 为质数。

解题思路

先推一波式子

\[\large \sum_{i=1}^n\sum_{j=1}^n ij \gcd(i,j)\\ \large = \sum_{d=1}^nd\sum_{i=1}^{\frac nd}\sum_{j=1}^{\frac nd} ijd^2 [gcd(i,j)=1]\\ \large = \sum_{d=1}^nd^3\sum_{k=1}^{\frac nd}\mu(k)k^2\sum_{i=1}^{\frac n{dk}}\sum_{j=1}^{\frac n{dk}} ij\\ \large = \sum_{T=1}^nT^2\sum_{k|T}\mu(k)\frac Tk\sum_{i=1}^{\frac n{T}}\sum_{j=1}^{\frac n{T}} ij\\ \large = \sum_{T=1}^nT^2\varphi(T)\sum_{i=1}^{\frac n{T}}\sum_{j=1}^{\frac n{T}} ij\\ \large = \sum_{T=1}^nSum(\frac nT)^2(T^2\varphi(T))\\ \]

后面的可以杜教筛,前面的整除分块即可

posted @ 2020-06-11 18:26  Hs-black  阅读(150)  评论(0编辑  收藏  举报