题目大意:略 洛谷传送门

杜教筛入门题?

以下都是常规套路的变形,不再过多解释

$\sum\limits_{i=1}^{N}\sum\limits_{j=1}^{N}ijgcd(i,j)$

$\sum\limits_{i=1}^{N}\sum\limits_{j=1}^{N}ij\sum\limits_{d|gcd(i,j)}\varphi(d)$

$\sum\limits_{d=1}^{N} \varphi(d) \sum\limits_{i=1}^{N}\sum\limits_{j=1}^{N}ij$

$\sum\limits_{d=1}^{N} \varphi(d) d^{2} \sum\limits_{i=1}^{\left \lfloor \frac{N}{d} \right \rfloor}\sum\limits_{j=1}^{\left \lfloor \frac{N}{d} \right \rfloor}ij$

令$f(d)=\varphi(d) d^{2}$,由于$\varphi(d)$和$1(d)$都是积性函数,所以$f(d)$是积性函数

数据范围好像有点大?$n \leq 10^{10}$?杜教筛!

考虑设计一个和$f$搭配且同为积性函数$g$,且$(f*g)$能很快计算出来,令$f(n)$前缀和是$S(n)$

给出杜教筛的推导式

$S(n)=\sum\limits_{i=1}^{N}(f*g)(i)-\sum\limits_{i=2}^{N}g(i)S(\left \lfloor \frac{N}{i} \right \rfloor)$

根据常见狄利克雷卷积形式$id=1*\varphi$,容易推出比较优秀的$g(d)=d^{2}$,那么$(f*g)(n)=\sum\limits_{d|n}f(d)*g(\frac{n}{d})=\varphi(d) d^{2}(\frac{n}{d})^{2}=n^{3}$

$g$的前缀和就是平方和,$(f*g)$的前缀和就是立方和,可以$O(1)$求出来

一定要多取模,不然有些地方可能会爆$longlong$

 #include <cstdio>
#include <cstring>
#include <algorithm>
#define N1 5000010
#define M1 3000010
#define ll long long
#define dd double
#define cll const long long
using namespace std; const int maxn=; void exgcd(ll a,ll b,ll &x,ll &y)
{
if(!b){ x=; y=; return; }
exgcd(b,a%b,x,y); ll t=x; x=y; y=t-a/b*y;
}
struct Hsh{
#define M 3000000
int head[M1],nxt[M1],val[M1],cte;ll to[M1];
void ins(ll x,int w)
{
int j,y=x%M;ll v;
for(j=head[y];j;j=nxt[j]){ v=to[j]; if(v==x) return; }
cte++; to[cte]=x; val[cte]=w; nxt[cte]=head[y]; head[y]=cte;
}
int query(ll x)
{
int j,y=x%M;ll v;
for(j=head[y];j;j=nxt[j]){ v=to[j]; if(v==x) return val[j]; }
return -;
}
#undef M
}h; ll n,m,inv2,inv6;
int use[N1],pr[N1],cnt,phi[N1];
ll f[N1],sf[N1];
void get_mu(cll &jr)
{
int i,j; phi[]=f[]=sf[]=use[]=;
for(i=;i<=maxn;i++)
{
if(!use[i]){ pr[++cnt]=i; phi[i]=i-; }
for(j=;j<=cnt&&i*pr[j]<=maxn;j++)
{
use[i*pr[j]]=;
if(i%pr[j]){ phi[i*pr[j]]=phi[i]*(pr[j]-)%jr; }
else{ phi[i*pr[j]]=phi[i]*pr[j]%jr; break; }
}
f[i]=1ll*i*i%jr*phi[i]%jr;
sf[i]=(sf[i-]+f[i])%jr;
}
}
int F(ll x,cll &jr)
{
if(x<=maxn) return sf[x];
ll ans=h.query(x); if(ans!=-) return ans;
ll i,la,pi,pla; ans=x%jr*(x+)%jr*inv2%jr; ans=ans*ans%jr;
for(i=;i<=x;i=la+){
la=x/(x/i); pi=i%jr; pla=la%jr;
ans-=(1ll*pla%jr*(pla+)%jr*(*pla+)%jr-1ll*(pi-)%jr*(pi)%jr*(*pi-)%jr)*inv6%jr*F(x/i,jr)%jr;
}
ans=(ans%jr+jr)%jr;
h.ins(x,ans);
return ans;
} int main()
{
scanf("%lld%lld",&m,&n);
cll jr=m; get_mu(jr); ll i,la,x,y,ans=;
exgcd(,jr,inv6,y); exgcd(,jr,inv2,y); inv6=(inv6%jr+jr)%jr; inv2=(inv2%jr+jr)%jr;
for(i=;i<=n;i=la+)
{
la=n/(n/i);
if((n/i)&) x=(n/i+)/%jr*((n/i)%jr)%jr;
else x=(n/i)/%jr*((n/i+)%jr)%jr;
ans=(x*x%jr*(F(la,jr)-F(i-,jr)+jr)+ans)%jr;
}
printf("%lld\n",ans);
return ;
}

luogu 3768 简单的数学题 (莫比乌斯反演+杜教筛)的更多相关文章

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

    题目链接 简单的数学题 题目描述 输入一个整数n和一个整数p,你需要求出 \[\sum_{i=1}^n\sum_{j=1}^n (i\cdot j\cdot gcd(i,j))\ mod\ p\]  ...

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

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

  3. LOJ#6229. 这是一道简单的数学题(莫比乌斯反演+杜教筛)

    题目链接 \(Description\) 求\[\sum_{i=1}^n\sum_{j=1}^i\frac{lcm(i,j)}{gcd(i,j)}\] 答案对\(10^9+7\)取模. \(n< ...

  4. [复习]莫比乌斯反演,杜教筛,min_25筛

    [复习]莫比乌斯反演,杜教筛,min_25筛 莫比乌斯反演 做题的时候的常用形式: \[\begin{aligned}g(n)&=\sum_{n|d}f(d)\\f(n)&=\sum_ ...

  5. 【bzoj3930】[CQOI2015]选数 莫比乌斯反演+杜教筛

    题目描述 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案.小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都求一次最大公约数,以便进一 ...

  6. [BZOJ 3930] [CQOI 2015]选数(莫比乌斯反演+杜教筛)

    [BZOJ 3930] [CQOI 2015]选数(莫比乌斯反演+杜教筛) 题面 我们知道,从区间\([L,R]\)(L和R为整数)中选取N个整数,总共有\((R-L+1)^N\)种方案.求最大公约数 ...

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

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

  8. EOJ Monthly 2019.11 E. 数学题(莫比乌斯反演+杜教筛+拉格朗日插值)

    传送门 题意: 统计\(k\)元组个数\((a_1,a_2,\cdots,a_n),1\leq a_i\leq n\)使得\(gcd(a_1,a_2,\cdots,a_k,n)=1\). 定义\(f( ...

  9. 【CCPC-Wannafly Winter Camp Day3 (Div1) F】小清新数论(莫比乌斯反演+杜教筛)

    点此看题面 大致题意: 让你求出\(\sum_{i=1}^n\sum_{j=1}^n\mu(gcd(i,j))\). 莫比乌斯反演 这种题目,一看就是莫比乌斯反演啊!(连莫比乌斯函数都有) 关于莫比乌 ...

随机推荐

  1. 第五节、矩阵分解之LU分解

    一.A的LU分解:A=LU 我们之前探讨过矩阵消元,当时我们通过EA=U将A消元得到了U,这一节,我们从另一个角度分析A与U的关系 假设A是非奇异矩阵且消元过程中没有行交换,我们便可以将矩阵消元的EA ...

  2. 使用excel进行数据挖掘(2)----分析关键影响因素

    使用excel进行数据挖掘(2)----分析关键影响因素 在配置环境后,能够使用excel进行数据挖掘. 环境配置问题可參阅: http://blog.csdn.net/xinxing__8185/a ...

  3. java封装AES加密算法

    在实际coding中会常常遇到往数据库存入密码时加密.URL传參时的加密.由此简单封装了下java中的AES加密算法. 0.import类 import java.security.SecureRan ...

  4. OLR文件丢失的恢复

    11.2.0.1的RAC中,rac1和rac2 一.OLR有备份的情况 1.手动将rac1中的olr重命名,模拟丢失 mv rac1.olr rac1.olr.test 2.重新启动crs ./crs ...

  5. 数据库技术_Orcale技术(0002)_5分钟会用存储过程_存储过程实例

    基础技术: 样例业务功能: 1.依据传入的类型A_TYPE联合查询PROCEDURE_TEST_A表.PROCEDURE_TEST_A_SUB表中的数据.并显示主要内容. 2.依据传入的类型A_TYP ...

  6. Android应用开发进阶篇-场景文字识别

    因为研究生毕业项目须要完毕一个基于移动终端的场景文字识别系统.尽管离毕业尚早,但出于兴趣的缘故,近一段抽时间完毕了这样一套系统. 主要的架构例如以下: client:Android应用实现拍摄场景图片 ...

  7. TensorRT加速 ——NVIDIA终端AI芯片加速用,可以直接利用caffe或TensorFlow生成的模型来predict(inference)

    官网:https://developer.nvidia.com/tensorrt 作用:NVIDIA TensorRT™ is a high-performance deep learning inf ...

  8. RBF网络——核心思想:把向量从低维m映射到高维P,低维线性不可分的情况到高维就线性可分了

      RBF网络能够逼近任意的非线性函数,可以处理系统内的难以解析的规律性,具有良好的泛化能力,并有很快的学习收敛速度,已成功应用于非线性函数逼近.时间序列分析.数据分类.模式识别.信息处理.图像处理. ...

  9. 2017-3-10 leetcode 229 238 268

    今天登陆leetcode突然发现531被锁了,有种占了便宜的感觉哈哈哈! ================================================ leetcode229 Ma ...

  10. 如何用jquery+ajax写省市区的三级联动?(封装和不封装两种方式)-----2017-05-14

    首先,要实现如下图效果, 1.要理清思路: 先做出三个下拉菜单----根据第一个下拉菜单的value值获取第二个下拉列表的内容,第三个同理. 2.用到的数据库表:Chinastates表 规律:根据国 ...