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的数论:杜教筛,莫比乌斯反演的更多相关文章

  1. [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∑N​j=1∑N​d(ij) ...

  2. 【XSY2731】Div 数论 杜教筛 莫比乌斯反演

    题目大意 定义复数\(a+bi\)为整数\(k\)的约数,当且仅当\(a\)和\(b\)为整数且存在整数\(c\)和\(d\)满足\((a+bi)(c+di)=k\). 定义复数\(a+bi\)的实部 ...

  3. BZOJ_4176_Lucas的数论_杜教筛+莫比乌斯反演

    BZOJ_4176_Lucas的数论_杜教筛+莫比乌斯反演 Description 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么喜欢了. 在整理以前的试题时,发现了这样一道题目“求 ...

  4. 【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+ ...

  5. bzoj 4176: Lucas的数论 -- 杜教筛,莫比乌斯反演

    4176: Lucas的数论 Time Limit: 30 Sec  Memory Limit: 256 MB Description 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么 ...

  6. BZOJ 4176: Lucas的数论 [杜教筛]

    4176: Lucas的数论 题意:求\(\sum_{i=1}^n \sum_{j=1}^n \sigma_0(ij)\) \(n \le 10^9\) 代入\(\sigma_0(nm)=\sum_{ ...

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

    题面: 传送门 思路: 首先我们把区间缩小到$\left[\lfloor\frac{L-1}{K}\rfloor,\lfloor\frac{R}{K}\rfloor\right]$ 这道题的最特殊的点 ...

  8. [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 ...

  9. bzoj4176. Lucas的数论 杜教筛

    题意:求\(\sum_{i=1}^n\sum_{j=1}^nd(ij),d是约数个数函数\) 题解:首先有一个结论\(d(ij)=\sum_{x|i}\sum_{y|j}[(i,j)==1]\) 那么 ...

  10. bzoj 4916: 神犇和蒟蒻 (杜教筛+莫比乌斯反演)

    题目大意: 读入n. 第一行输出“1”(不带引号). 第二行输出$\sum_{i=1}^n i\phi(i)$. 题解: 所以说那个$\sum\mu$是在开玩笑么=.= 设$f(n)=n\phi(n) ...

随机推荐

  1. python获取全国各个城市pm2.5、臭氧等空气质量

    随着国家发展,中国很多城市的空气质量其实并不好,国家气象局会有实时统计,但是要去写爬虫爬取是十分麻烦的事情,并且官方网站也会做一些反爬虫措施,所以实现起来比较麻烦,最好的办法就是使用现成的免费接口,空 ...

  2. Python爬虫零基础入门(系列)

    一.前言上一篇演示了如何使用requests模块向网站发送http请求,获取到网页的HTML数据.这篇来演示如何使用BeautifulSoup模块来从HTML文本中提取我们想要的数据. update ...

  3. Python 爬虫(四):Selenium 框架

    Selenium 是一个用于测试 Web 应用程序的框架,该框架测试直接在浏览器中运行,就像真实用户操作一样.它支持多种平台:Windows.Linux.Mac,支持多种语言:Python.Perl. ...

  4. Spring Boot 2.x基础教程:Swagger静态文档的生成

    前言 通过之前的两篇关于Swagger入门以及具体使用细节的介绍之后,我们已经能够轻松地为Spring MVC的Web项目自动构建出API文档了.如果您还不熟悉这块,可以先阅读: Spring Boo ...

  5. python urllib2实现http GET PUT DELETE POST的方法

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/3/11 下午8:33 # @Author : liubing # @File ...

  6. 关于seaJs合并压缩(gulp-seajs-combine )路径与文件ID匹配问题。

    前段时间和有大家介绍过用 gulp-seajs-combine 来打包seaJs文件.大家会发现合并seaJs一个很奇怪的现象,那就是它的 ID和路径匹配原则.使得有些文件已经合并过去了,但还是会提示 ...

  7. bcache 状态/配置 文件详细介绍(翻译自官网)

    声明: 文中 斜体带下划线  的段落为翻译不够准确的段落 原文:https://www.kernel.org/doc/Documentation/bcache.txt 官网:https://bcach ...

  8. Halcon一日一练:获取图像属性

    从图像属性我们可以了解图像的基本信息,比如大小,高度,指针等. Halcon提供了获取图像属性的算子. 我们来看看下面例子: **获取图像属性 read_image(Image,'Clip') dev ...

  9. opencv::模糊图像2

    中值滤波 统计排序滤波器 中值对椒盐噪声有很好的抑制作用 medianBlur(Mat src, Mat dest, ksize) 双边滤波 均值模糊无法克服边缘像素信息丢失缺陷.原因是均值滤波是基于 ...

  10. C#窗体练习:带历史信息的菜单

    在开发图纸管理软件时,要求在菜单上记录用户最近打开的档案或图纸,以方便下次使用.单击“文件”菜单下的“打开文件”子菜单,打开需要查阅的图纸.下次运行该软件时,上次打开的文件名记录到“文件”菜单的历史菜 ...