博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
51nod1244 莫比乌斯函数之和
阅读量:5058 次
发布时间:2019-06-12

本文共 1917 字,大约阅读时间需要 6 分钟。

杜教筛模板

给$\mu$找个函数1,因为$\mu * 1=I$,其中I是元函数,I(x)=[x==1]。

那就$\sum_{i=1}^{n}\sum_{d|i}\mu(d)=\sum_{k=1}^{n}1\sum_{d=1}^{\left \lfloor \frac{n}{k} \right \rfloor}\mu(d)=\sum_{k=1}^{n}S(\left \lfloor \frac{n}{k} \right \rfloor)$

然后$S(n)=\sum_{i=1}^{n}\sum_{d|i}\mu(d)-\sum_{k=2}^{n}S(\left \lfloor \frac{n}{k} \right \rfloor)=1-S(\left \lfloor \frac{n}{k} \right \rfloor)$。

搞定!

1 #include
2 #include
3 #include
4 #include
5 //#include
6 #include
7 //#include
8 //#include
9 using namespace std;10 11 #define LL long long12 LL n,m;13 #define maxn 500001114 int miu[maxn],summiu[maxn],prime[maxn/10],lp; bool notprime[maxn];15 void pre(int n)16 {17 lp=0; miu[1]=1; summiu[1]=1;18 for (int i=2;i<=n;i++)19 {20 if (!notprime[i]) {prime[++lp]=i; miu[i]=-1;}21 summiu[i]=summiu[i-1]+miu[i];22 for (int j=1,tmp;j<=lp && 1ll*prime[j]*i<=n;j++)23 {24 notprime[tmp=i*prime[j]]=1;25 if (i%prime[j]) miu[tmp]=-miu[i];26 else {miu[tmp]=0; break;}27 }28 }29 }30 31 struct Edge{LL to; int v,next;};32 #define maxh 100000733 struct Hash34 {35 int first[maxh],le;Edge edge[maxn];36 Hash() {le=2;}37 void insert(LL y,int v)38 { int x=y%maxh; Edge &e=edge[le]; e.to=y; e.v=v; e.next=first[x]; first[x]=le++;}39 int find(LL y)40 {41 int x=y%maxh;42 for (int i=first[x];i;i=edge[i].next) if (edge[i].to==y) return edge[i].v;43 return -1;44 }45 }h;46 47 int du(LL n)48 {49 if (n<=m) return summiu[n];50 int tmp=h.find(n); if (tmp!=-1) return tmp;51 LL tot=0;52 for (LL i=2,last;i<=n;i=last+1)53 {54 last=n/(n/i);55 tot+=(last-i+1)*du(n/i);56 }57 LL ans=1-tot;58 h.insert(n,ans);59 return ans;60 }61 62 int main()63 {64 LL left;scanf("%lld%lld",&left,&n);65 m=(LL)pow(pow(n,1.0/3),2); pre(m);66 printf("%d\n",du(n)-du(left-1));67 return 0;68 }
View Code

 

转载于:https://www.cnblogs.com/Blue233333/p/8315863.html

你可能感兴趣的文章
docker 私有仓库之Harbor搭建与使用
查看>>
Android(Linux) 网卡名修改
查看>>
使用JavaScript给对象修改注册监听器
查看>>
最详细的Vue Hello World应用开发步骤
查看>>
优秀博客集合
查看>>
SQL Server 分页
查看>>
sql 入门经典(第五版) Ryan Stephens 学习笔记 第五部分: 性能调整
查看>>
jQuery tag标签插件
查看>>
OpenCV2:大学篇 形态学技术-腐蚀与膨胀操作
查看>>
【转】如何管理自己?
查看>>
练习1-10 编写一个将输入复制到输出的程序,并将其中的制表符替换成\t,把回退符替换成\b,把反斜杠替换成\\,这样可以将制表符和回退符以可见的方式显示出来...
查看>>
10 个Javascript框架和丰富的UI组件
查看>>
IE11浏览器中的My97日历控件刷新后无法打开问题解决办法
查看>>
会话保持:粘滞会话
查看>>
Git免密码提交
查看>>
Android手机外置SD卡(TF卡)的获取方法
查看>>
LeetCode 132. 分割回文串 II(Palindrome Partitioning II)
查看>>
关于PHP的引用赋值
查看>>
软件工程第三次作业
查看>>
默慈金数
查看>>