Lucas的数论:杜教筛,莫比乌斯反演
Description:
求$\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{n} d(i \times j)$
$d(i)$表示$i$的约数个数和。$n \leq 10^9$
废话:
好久没有做反演了感觉自己都不会了。。。
做了一遍发现自己真的不会了
手推了不知道多久终于推出了式子中间还错了一遍打了一半发现过不去样例
题解:
标签都知道了那也就没什么好说的了,直接上式子(类比《约数个数和》那道题)(以下分数皆表示整除向下取整)
$\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{n} d(i \times j)$
$=\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{n} \sum\limits_{a|i} \sum\limits_{b|j} [gcd(a,b)==1] $
$=\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{n} \sum\limits_{a|i} \sum\limits_{b|j} \sum\limits_{d|a \ and \ d|b} \mu (d) $
$=\sum\limits_{d=1}^{n} \mu (d) \sum\limits_{a=1}^{\frac{n}{d}} \sum\limits_{b=1}^{\frac{n}{d}} \frac{\frac{n}{d}}{a} \frac{\frac{n}{d}}{b}$
$=\sum\limits_{d=1}^{n} \mu (d) (\sum\limits_{i=1}^{\frac{n}{d}} \frac{\frac{n}{d}}{i})^2$
然后第二个$\sum$后面的东西视作函数$f(\frac{n}{d})$,可以整除分块,前面就是杜教筛得到$\mu$的前缀和
然后函数$f(\frac{n}{d})$的求值其实也就是一个整除分块。
其实$f(x)=\sum\limits_{i=1}^{x} d(i)$即$\sum\limits_{i=1}^{x} d(i) =\sum\limits_{i=1}^{x} \frac{x}{i}$
这里的$d(x)$函数也是约数个数的意思。%%%LrefraiNC
从含义上也可以理解。所以$f(x)$函数也可以杜教筛。但是我还没有做过$d(i)$的杜教筛所以我没有打。
杜教筛线筛预处理的范围应该在$n^{\frac{2}{3}}=10^6$不然慢的要死(虽说没有T)
#include<cstdio>
#define mod 1000000007
struct hash_map{
int w[],fir[],l[],to[],cnt;
int &operator[](int x){
int r=x%;
for(int i=fir[r];i;i=l[i])if(to[i]==x)return w[i];
l[++cnt]=fir[r];fir[r]=cnt;to[cnt]=x;return w[cnt]=-;
}
}M;
int p[],mu[],pc;char np[];
int sum(int n){
if(n<=)return mu[n];
if(M[n]!=-)return M[n];
int a=;
for(int l=,r,A;l<=n;l=r+)A=n/l,r=n/A,a-=sum(A)*(r-l+);
return M[n]=a;
}
long long cal(int x,long long ans=){
for(int l=,r,a;l<=x;l=r+)a=x/l,r=x/a,ans=(ans+a*(r-l+1ll))%mod;
return ans*ans%mod;
}
int main(){
mu[]=;
for(int i=;i<=;++i){
if(!np[i])p[++pc]=i,mu[i]=-;
for(int j=;j<=pc&&i*p[j]<=;++j)
if(i%p[j])mu[i*p[j]]=-mu[i],np[i*p[j]]=-;
else np[i*p[j]]=-;
mu[i]+=mu[i-];
}
int n;long long ans=;scanf("%d",&n);
for(int l=,r,a;l<=n;l=r+)a=n/l,r=n/a,ans+=1ll*cal(a)*(sum(r)-sum(l-))%mod;
printf("%lld\n",(ans%mod+mod)%mod);
}
Lucas的数论:杜教筛,莫比乌斯反演的更多相关文章
- [bzoj 4176] Lucas的数论 (杜教筛 + 莫比乌斯反演)
题面 设d(x)d(x)d(x)为xxx的约数个数,给定NNN,求 ∑i=1N∑j=1Nd(ij)\sum^{N}_{i=1}\sum^{N}_{j=1} d(ij)i=1∑Nj=1∑Nd(ij) ...
- 【XSY2731】Div 数论 杜教筛 莫比乌斯反演
题目大意 定义复数\(a+bi\)为整数\(k\)的约数,当且仅当\(a\)和\(b\)为整数且存在整数\(c\)和\(d\)满足\((a+bi)(c+di)=k\). 定义复数\(a+bi\)的实部 ...
- BZOJ_4176_Lucas的数论_杜教筛+莫比乌斯反演
BZOJ_4176_Lucas的数论_杜教筛+莫比乌斯反演 Description 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么喜欢了. 在整理以前的试题时,发现了这样一道题目“求 ...
- 【BZOJ4176】Lucas的数论-杜教筛
求$$\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}f(ij)$$,其中$f(x)$表示$x$的约数个数,$0\leq n\leq 10^9$,答案膜$10^9+ ...
- bzoj 4176: Lucas的数论 -- 杜教筛,莫比乌斯反演
4176: Lucas的数论 Time Limit: 30 Sec Memory Limit: 256 MB Description 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么 ...
- BZOJ 4176: Lucas的数论 [杜教筛]
4176: Lucas的数论 题意:求\(\sum_{i=1}^n \sum_{j=1}^n \sigma_0(ij)\) \(n \le 10^9\) 代入\(\sigma_0(nm)=\sum_{ ...
- [CQOI2015][bzoj3930] 选数 [杜教筛+莫比乌斯反演]
题面: 传送门 思路: 首先我们把区间缩小到$\left[\lfloor\frac{L-1}{K}\rfloor,\lfloor\frac{R}{K}\rfloor\right]$ 这道题的最特殊的点 ...
- [51Nod 1237] 最大公约数之和 (杜教筛+莫比乌斯反演)
题目描述 求∑i=1n∑j=1n(i,j) mod (1e9+7)n<=1010\sum_{i=1}^n\sum_{j=1}^n(i,j)~mod~(1e9+7)\\n<=10^{10}i ...
- bzoj4176. Lucas的数论 杜教筛
题意:求\(\sum_{i=1}^n\sum_{j=1}^nd(ij),d是约数个数函数\) 题解:首先有一个结论\(d(ij)=\sum_{x|i}\sum_{y|j}[(i,j)==1]\) 那么 ...
- bzoj 4916: 神犇和蒟蒻 (杜教筛+莫比乌斯反演)
题目大意: 读入n. 第一行输出“1”(不带引号). 第二行输出$\sum_{i=1}^n i\phi(i)$. 题解: 所以说那个$\sum\mu$是在开玩笑么=.= 设$f(n)=n\phi(n) ...
随机推荐
- mysql配置默认字符集为UTF8mb4
[client] default-character-set=utf8mb4 [mysqld] character-set-server = utf8mb4 collation-server = ut ...
- 安装web3失败问题
① 首先可以先通过 npm cache verify 清理下缓存,在进行安装 ② 如果还是安装失败可以尝试 --- npm install web3@^0.20.0 或者 npm install ...
- 从单片机到操作系统⑦——深入了解FreeRTOS的延时机制
>没研究过操作系统的源码都不算学过操作系统 # FreeRTOS 时间管理 时间管理包括两个方面:系统节拍以及任务延时管理. ## 系统节拍: 在前面的文章也讲得很多,想要系统正常运行,那么时钟 ...
- Elasticsearch 7.x 之文档、索引和 REST API 【基础入门篇】
前几天写过一篇<Elasticsearch 7.x 最详细安装及配置>,今天继续最新版基础入门内容.这一篇简单总结了 Elasticsearch 7.x 之文档.索引和 REST API. ...
- HashMap的结构以及核心源码分析
摘要 对于Java开发人员来说,能够熟练地掌握java的集合类是必须的,本节想要跟大家共同学习一下JDK1.8中HashMap的底层实现与源码分析.HashMap是开发中使用频率最高的用于映射(键值对 ...
- [USACO17FEB]Why Did the Cow Cross the Road III S
题目描述 Why did the cow cross the road? Well, one reason is that Farmer John's farm simply has a lot of ...
- openssl之DH(Diffie–Hellman)加密
//加密机制初始化 g_HDMgr.init(); //对方的public key BIGNUM* peerPubKey = NULL; peerPubKey = BN_bin2bn((unsigne ...
- Tomcat源码分析三:Tomcat启动加载过程(一)的源码解析
Tomcat启动加载过程(一)的源码解析 今天,我将分享用源码的方式讲解Tomcat启动的加载过程,关于Tomcat的架构请参阅<Tomcat源码分析二:先看看Tomcat的整体架构>一文 ...
- python编程系列---多线程共享全局变量出现了安全问题的解决方法
多线程共享全局变量出现了安全问题的解决方法 当多线程共享全局变量时,可能出现安全问题,解决机制----互斥锁:即在在一段与全局变量修改相关的代码中,假设一个时间片不足以完成全局变量的修改,就在这段代码 ...
- C语言中的isalpha,isdigit,islower,isupper等一系列函数
TITLE:c语言中的isalpha,isdigit,islower,isupper等一系列函数 已经全部验证检查,无任何错误 isalnum(测试字符是否为英文或数字) 相关函数 isalpha,i ...