题意:求$(\sum_{i=1}^{n}\sum_{j=1}^{n}ijgcd(i,j))mod p$(p为质数,n<=1e10)

很显然,推式子。

$\sum_{i=1}^{n}\sum_{j=1}^{n}ijgcd(i,j)$

=$\sum_{d=1}^{n}\sum_{i=1}^{n}\sum_{j=1}^{n}ijd[gcd(i,j)==d]$

=$\sum_{d=1}^{n}d^3\sum_{i=1}^{\lfloor \frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor \frac{n}{d}\rfloor}ij[gcd(i,j)==d]$

=$\sum_{d=1}^{n}d^3\sum_{i=1}^{\lfloor \frac{n}{d}\rfloor}\mu(i)i^2S({\lfloor \frac{n}{id}\rfloor})^2,S(n)=(n+1)*n/2$

=$\sum_{T=1}^{n}S({\lfloor \frac{n}{T}\rfloor})^2\sum_{d|T}d^3(\frac{T}{d})^2\mu(\frac{T}{d})$

=$\sum_{T=1}^{n}S({\lfloor \frac{n}{T}\rfloor})^2T^2\sum_{d|T}d\mu(\frac{T}{d})$

由$\mu*id=\varphi $可得$\sum_{T=1}^{n}S({\lfloor \frac{n}{T}\rfloor})^2T^2\varphi (T)$

前面整除分块,只需要预处理$T^2\varphi(T)$ 前缀和即可。

由于n有1e10那么大,就需要用到非线性的求前缀和的方法,这里用到杜教筛,见代码。

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e6+;
int pri[N],tot,phi[N],sum[N];
bool p[N];
ll n,MD,ans,inv6;
unordered_map<ll,int> w;
void init() {
phi[]=;
for(int i=;i<N;i++) {
if(!p[i]) phi[i]=i-,pri[tot++]=i;
for(int j=;j<tot&&pri[j]*i<N;j++) {
p[i*pri[j]]=true;
if(i%pri[j]==) {
phi[i*pri[j]]=phi[i]*pri[j];
break;
}
else phi[i*pri[j]]=phi[i]*phi[pri[j]];
}
}
for(int i=;i<N;i++) sum[i]=(sum[i-]+1LL*i*i%MD*phi[i]%MD)%MD;
}
ll pre_3(ll x) {
x%=MD;
ll t=x*(x+)/%MD;
return t*t%MD;
}
ll pre_2(ll x) {
x%=MD;
return x*(x+)%MD*(*x+)%MD*inv6%MD;
}
int quick_pow(int x,int y) {
int ans=;
while(y) {
if(y&) ans=1LL*ans*x%MD;
y>>=;
x=1LL*x*x%MD;
}
return ans;
}
int cal(ll x) {
if(x<N) return sum[x];
if(w[x]) return w[x];
ll ans=pre_3(x);
for(ll l=,r;l<=x;l=r+) {
r=x/(x/l);
ans=(ans-(pre_2(r)-pre_2(l-)+MD)%MD*cal(x/l)%MD+MD)%MD;
}
return w[x]=ans;
}
int main() {
scanf("%lld%lld",&MD,&n);
inv6=quick_pow(,MD-),init();
for(ll l=,r;l<=n;l=r+) {
r=n/(n/l);
ans=(ans+pre_3(n/l)*(cal(r)-cal(l-)+MD)%MD)%MD;
}
printf("%lld\n",ans);
return ;
}

洛谷 P3768 简单的数学题 (莫比乌斯反演)的更多相关文章

  1. 洛谷P3768 简单的数学题 莫比乌斯反演+杜教筛

    题意简述 求出这个式子 \[ \sum_{i=1}^n\sum_{j=1}^n ij(i,j) \bmod p \] 做法 先用莫比乌斯反演拆一下式子 \[ \begin{split} \sum_{i ...

  2. 洛谷 P3768 简单的数学题 解题报告

    P3768 简单的数学题 题目描述 由于出题人懒得写背景了,题目还是简单一点好. 输入一个整数\(n\)和一个整数\(p,\)你需要求出\((\sum_{i=1}^n\sum_{j=1}^n ijgc ...

  3. 【刷题】洛谷 P3768 简单的数学题

    题目描述 由于出题人懒得写背景了,题目还是简单一点好. 输入一个整数n和一个整数p,你需要求出(\(\sum_{i=1}^n\sum_{j=1}^n ijgcd(i,j))~mod~p\),其中gcd ...

  4. 洛谷 - P3768 - 简单的数学题 - 欧拉函数 - 莫比乌斯反演

    https://www.luogu.org/problemnew/show/P3768 \(F(n)=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}ijgcd(i ...

  5. 洛谷P3768 简单的数学题(莫比乌斯反演+狄利克雷卷积+杜教筛)

    传送门 不会…… 两篇加在一起都看不懂…… https://www.cnblogs.com/cellular-automaton/p/8241128.html https://www.luogu.or ...

  6. 洛谷P3768 简单的数学题 【莫比乌斯反演 + 杜教筛】

    题目描述 求 \[\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{n} i*j*gcd(i,j) \pmod{p}\] \(n<=10^{10}\),\(p\) ...

  7. 洛谷P3768 简单的数学题

    解: 神奇的一批......参观yyb巨神的博客. 大致思路就是第一步枚举gcd,发现后面有个限制是gcd=1,用反演,得到的F(x)是两个等差数列求积. 然后发现有个地方我们除法的除数是乘积,于是换 ...

  8. 洛谷 P3768 简单的数学题

    https://www.luogu.org/problemnew/show/P3768 化简一下式子,就是$\sum_{d=1}^ncalc(d)d^2\varphi(d)$ 其中$calc(d)=\ ...

  9. 洛谷P3768 简单的数学题解题报告

    $$\begin{eqnarray}&\sum_{i=1}^{n}\sum_{j=1}^{n}ij\gcd(i,j)\\&\sum_{d=1}^{n}\sum_{i=1}^{n}\su ...

随机推荐

  1. VS2005编译VTK5.10.1

    1.从官方下载源文件和数据文件解压到同一个文件夹 2.下载并安装cmake 3.打开cmake选择VTK源文件路径和编译生成路径 注意:在路径里面不能出现中文字符!(我觉得以后的路径尽可能不要有中文字 ...

  2. 2019-6-23-win10-uwp-未给任务-GenerateAppxPackageRecipe-的必需参数-AppxManifestXml-赋值

    title author date CreateTime categories win10 uwp 未给任务 GenerateAppxPackageRecipe 的必需参数 AppxManifestX ...

  3. vue之this.$route.params和this.$route.query的区别

    1.this.$route.query的使用 A.传参数: this.$router.push({          path: '/monitor',          query:{       ...

  4. AppServer初始化渠道

    1.写了一个拦截器(RequestInterceptor) 2.里边有个有一个doRequest()方法 3.初始化渠道的方法(initRequestContext()) -------------- ...

  5. 主流浏览器HTML5视频格式差异

    因最近在研究video.js,现在遇到的问题是在js中设置了swf,但是在ie8下只是显示黑屏并没有播放视频,在网上进行搜索时查到了有关各个浏览器支持哪些视频格式的文章,现在此记录下,方便以后查阅. ...

  6. light oj 1149 Factors and Multiples(二分匹配)

    LightOJ1149 :Factors and Multiples 时间限制:2000MS    内存限制:32768KByte   64位IO格式:%lld & %llu 描述 You w ...

  7. ajax实例解析

    function showHint(str) { var xmlhttp; if (str.length==0) { document.getElementById("txtHint&quo ...

  8. CesiumLab V1.4 新功能 BIM数据处理

    我也没想到,BIM数据处理一下拖了这么久才有个交代.我们照例先放图   Revit官方的示例数据   隐藏屋顶+俯视   曾经因为太大而无法导出无法处理的医院模型   室内装修方案模型 最近和很多做b ...

  9. spring的基于xml的AOP配置案例和切入点表达式的一些写法

    <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...

  10. round 469

    第一次打codeforces,还是太菜了 代码全部来自大神void_f C #include <cstdio> #include <vector> #include <c ...