题意:

求解$\sum_{i=a}^b{\mu(i)}$。

解法:

由$(\mu * I)(n) = e(n)$ 得 $\sum_{d|n}{\mu(d)} = [n=1]$ 得 $\mu(n) = \sum_{d|n,d<n}{\mu(d)}$

从而有$$\sum_{i=1}^n{\mu(i)} = 1 - \sum_{i=1}^n{ \sum_{d|i,d<i}{\mu(d)} }$$

    $$=1-\sum_{t=2}^n{ \sum_{d=1}^{[\frac{n}{t}]}{\mu(d)} }$$

记$S(n) = \sum_{i=1}^n{\mu(i)}$

从而有$S(n) = 1- \sum_{t=2}^n{S([\frac{n}{t}])}$

考虑分块优化此式,产生$O(\sqrt n)$的时间复杂度,当n小于等于$n^{0.6667}$时直接应用线性筛计算。

分析得会产生$O(n^{0.667})$个n,从而应用map,递归计算即可。

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <ctime>
#include <map> #define LL long long
#define LIM 5000000 using namespace std; int tot,prime[LIM+];
LL u[LIM+];
bool v[LIM+];
map<LL,LL> ansv; LL S(LL n)
{
if(n<=LIM) return u[n];
if(ansv.count(n)) return ansv[n];
LL j;
LL ans=;
for(LL i=;i<=n;i=j+)
{
j=n/(n/i);
ans -= (j-i+1LL) * S(n/i);
}
ansv[n]=ans;
return ans;
} int main()
{
// freopen("test.txt","r",stdin);
u[]=;
for(int i=;i<=LIM;i++)
{
if(!v[i])
{
prime[++tot]=i;
u[i]=-;
}
for(int j=;i*prime[j]<=LIM;j++)
{
v[i*prime[j]]=;
u[i*prime[j]]=u[i]*u[prime[j]];
if(i%prime[j]==)
{
u[i*prime[j]]=;
break;
}
}
}
for(int i=;i<=LIM;i++) u[i]+=u[i-];
LL a,b;
cin >> a >> b;
cout << S(b)-S(a-) << endl;
return ;
}

同样的方法,由$(\phi * I)(n) = id(n)$得到

$S(n) = \frac{n(n+1)}{2} - \sum_{t=2}^n{S([\frac{n}{t}])}$

注意n*(n+1)可能炸long long。

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <ctime>
#include <map>
#include <cassert> #define LL long long
#define LIM 5000000
#define P 1000000007LL using namespace std; int tot,prime[LIM+];
LL phi[LIM+],inv2;
bool v[LIM+];
map<LL,LL> ansv; LL S(LL n)
{
if(n<=LIM) return phi[n];
if(ansv.count(n)) return ansv[n];
LL j;
LL ans=n%P * (n%P + 1LL) %P * inv2%P;
assert(ans >=);
for(LL i=;i<=n;i=j+)
{
j=n/(n/i);
ans += P - ((j-i+1LL) * S(n/i)%P);
if(ans>=P) ans -= P;
}
ansv[n]=ans;
return ans;
} LL qpow(LL x,int n)
{
LL ans=;
for(;n;n>>=,x=x*x%P) if(n&) ans=ans*x%P;
return ans;
} int main()
{
// freopen("test.txt","r",stdin);
phi[]=;
for(int i=;i<=LIM;i++)
{
if(!v[i])
{
prime[++tot]=i;
phi[i]=i-;
}
for(int j=;i*prime[j]<=LIM;j++)
{
v[i*prime[j]]=;
phi[i*prime[j]]=phi[i]*phi[prime[j]];
if(i%prime[j]==)
{
phi[i*prime[j]]=phi[i]*prime[j];
break;
}
}
}
inv2=qpow(,P-);
for(int i=;i<=LIM;i++)
{
phi[i]=phi[i]+phi[i-];
if(phi[i]>=P) phi[i] -= P;
}
LL n;
cin >> n;
cout << S(n) << endl;
return ;
}

Mertens的更多相关文章

  1. 51nod 1244 莫比乌斯函数之和

    题目链接:51nod 1244 莫比乌斯函数之和 题解参考syh学长的博客:http://www.cnblogs.com/AOQNRMGYXLMV/p/4932537.html %%% 关于这一类求积 ...

  2. 分析一个嵌入payload的恶意.lnk文件

    原文:https://isc.sans.edu/diary/Analyzis+of+a+Malicious+.lnk+File+with+an+Embedded+Payload/20763 We re ...

  3. 51nod1244 莫比乌斯函数之和

    推公式.f[n]=1-∑f[n/i](i=2...n).然后递归+记忆化搜索.yyl说这叫杜教筛?时间复杂度貌似是O(n 2/3)的? #include<cstdio> #include& ...

  4. ### Paper about Event Detection

    Paper about Event Detection. #@author: gr #@date: 2014-03-15 #@email: forgerui@gmail.com 看一些相关的论文. 1 ...

  5. 51nod1240莫比乌斯函数

    莫比乌斯函数,由德国数学家和天文学家莫比乌斯提出.梅滕斯(Mertens)首先使用μ(n)(miu(n))作为莫比乌斯函数的记号.(据说,高斯(Gauss)比莫比乌斯早三十年就曾考虑过这个函数).   ...

  6. 51nod--1240莫比乌斯函数 (数论)

    题目: 1240 莫比乌斯函数 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 莫比乌斯函数,由德国数学家和天文学家莫比乌斯提出.梅滕斯(Mertens)首先 ...

  7. 51 Nod 1240 莫比乌斯函数

    1240 莫比乌斯函数  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 莫比乌斯函数,由德国数学家和天文学家莫比乌斯提出.梅滕斯(Mertens)首先使 ...

  8. 51Nod 1240:莫比乌斯函数

    1240 莫比乌斯函数  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 莫比乌斯函数,由德国数学家和天文学家莫比乌斯提出.梅滕斯(Mertens)首先使 ...

  9. 使用开源软件 enfuse 做照片的曝光合成

    使用开源软件 enfuse 做照片的曝光合成 所谓曝光合成就是对同一场景用不同的曝光量拍摄多张照片,然后将这些照片再合成为一张照片.之所以我们要这么做是因为现在的相机感光的动态范围相比人眼实在是太小了 ...

随机推荐

  1. C#动态编译dll或exe

    string strCode = @" using System; using System.Text; using System.Collections.Generic; using Sy ...

  2. Java EJB JBoss

    JBoss:JBoss是web服务器的一种,主要做EJB容器,和tomcat集成就可以jsp,servlet,ejb通吃了JBoss有两种版本,一种是独立的,一种是和tomcat集成的,当然都是免费的 ...

  3. C结构体对齐

    函数模板针对仅参数类型不同的函数?   http://blog.csdn.net/renrenhappy/article/details/5931457     计算结构体的大小就要考虑数据对齐问题. ...

  4. 车牌识别--OMAP4430处理器上測试

    OMAP4430(ME865) arm-linux-gcc 4.5.1(FriendlyARM) 软浮点执行结果: root@lj:/workspace/carid# arm-linux-gcc ca ...

  5. libraries_v140_x64_py35_1.0.1.tar.bz2 libraries_v120_x64_py27_1.1.0.tar 下载链接以及百度云下载链接

    下载链接 wget  -c  https://github.com/willyd/caffe-builder/releases/download/v1.0.1/libraries_v140_x64_p ...

  6. xpath 轴,节点之间的关系

    http://www.w3school.com.cn/xpath/xpath_axes.asp http://www.freeformatter.com/xpath-tester.html 测试 轴可 ...

  7. Tomcat Context 组件介绍(转载)

    来源:http://diecui1202.iteye.com/blog/1037370 Context代表一个Web应用,它运行在某个指定的虚拟主机(Host)上:每个Web应用都是一个WAR文件,或 ...

  8. 【计蒜客2017NOIP模拟赛1】

    D1T1 题面 题解:一开始以为傻题,旋转个坐标系就行了,结果光荣爆零~ 结果发现旋转坐标系后,由于多了一些虚点,锤子砸到虚点上了~gg [没有代码] D1T2 题面 题解:计算出每个边对答案的贡献即 ...

  9. 基于EasyDarwin云视频平台的幼儿园视频直播(手机直播/微信直播)解决方案

    一.方案介绍 1.1.方案背景 在2016年10月25日至28日的安博会上,我们看到了不少的幼教平台厂商,我们注意到大部分的幼教平台,为了追求极佳的用户体验,在微信或者APP端能够做到极快的打开速度, ...

  10. EasyRTMP实现RTMP异步直播推送之环形缓冲区设计

    本文转自EasyDarwin团队kim的博客:http://blog.csdn.net/jinlong0603 EasyRTMP的推送缓冲区设计 EasyRTMP内部也同样采用的环形缓冲的设计方法,将 ...