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

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

 

 

题意

求a~b的莫比乌斯函数和,$a,b<=10^{10}$

 

分析

杜教筛+hash+记忆化

求$S(n) = \sum\limits_{i=1}^{n}μ(i)$

对于莫比乌斯函数有$\sum\limits_{d|i}μ(d)=[i=1]$

所以$S(n) = \sum\limits_{i=1}^{n}\sum\limits_{d|i}μ(d)-\sum\limits_{i=1}^{n}\sum\limits_{d|i,d≠i}μ(d)$

$=1-\sum\limits_{i=1}^{n}\sum\limits_{d|i,d≠1}μ(\lfloor\frac{i}{d}\rfloor)$

$=1-\sum\limits_{i=2}^{n}\sum\limits_{d=1}^{\lfloor\frac{n}{i}\rfloor}μ(d)$

$=1-\sum\limits_{i=2}^{n}S(\lfloor\frac{n}{i}\rfloor)$

 

code

1 #include
2 #include
3 #include
4 5 using namespace std; 6 const int N = 5000000; 7 const int mod = 1000007; 8 typedef long long LL; 9 10 int prime[N+10],mu[N+10],tot,cnt;11 bool noprime[N+10];12 int h[mod],nxt[mod];13 LL v[mod],d[mod];14 15 void getmu() {16 mu[1] = 1;17 for (int i=2; i<=N; ++i) {18 if (!noprime[i]) prime[++tot] = i,mu[i] = -1;19 for (int j=1; j<=tot&&i*prime[j]<=N; ++j) {20 noprime[i*prime[j]] = true;21 if (i % prime[j]==0) {mu[i*prime[j]] = 0;break;}22 mu[i * prime[j]] = -mu[i];23 }24 }25 for (int i=1; i<=N; ++i) mu[i] += mu[i-1];26 }27 void addhash(LL x,LL y) {28 int p = x % mod;29 d[++cnt] = x;v[cnt] = y;nxt[cnt] = h[p];h[p] = cnt;30 }31 int gethash(LL x) {32 int p = h[x % mod];33 while (p!=-1 && d[p]!=x) p=nxt[p];34 return p;35 }36 LL Calc(LL x) {37 if (x <= N) return (LL)mu[x];38 int p = gethash(x);39 if (p != -1) return v[p];40 LL l=2,r,ret = 1;41 while (l <= x) {42 r = x / (x / l);43 ret -= 1ll * (r - l + 1) * Calc(x / l);44 l = r + 1;45 }46 addhash(x,ret);47 return ret;48 }49 int main () {50 memset(h,-1,sizeof(h));51 memset(nxt,-1,sizeof(nxt));52 LL a,b;53 getmu();54 cin >> a >> b;55 cout << Calc(b) - Calc(a-1);56 return 0;57 }

转载于:https://www.cnblogs.com/mjtcn/p/8429972.html

你可能感兴趣的文章
oracle中anyData数据类型的使用实例
查看>>
C++对vector里面的元素排序及取任意重叠区间
查看>>
软件测试——性能测试总结
查看>>
12.4站立会议
查看>>
Java Concurrentmodificationexception异常原因和解决方法
查看>>
客户端访问浏览器的流程
查看>>
codeforces水题100道 第二十二题 Codeforces Beta Round #89 (Div. 2) A. String Task (strings)
查看>>
c++||template
查看>>
[BZOJ 5323][Jxoi2018]游戏
查看>>
编程面试的10大算法概念汇总
查看>>
Vue
查看>>
python-三级菜单和购物车程序
查看>>
条件断点 符号断点
查看>>
VMware12 + Ubuntu16.04 虚拟磁盘扩容
查看>>
水平垂直居中
查看>>
MySQL简介
查看>>
设计模式之桥接模式(Bridge)
查看>>
jquery的$(document).ready()和onload的加载顺序
查看>>
Python Web框架Django (五)
查看>>
.net学习之继承、里氏替换原则LSP、虚方法、多态、抽象类、Equals方法、接口、装箱拆箱、字符串------(转)...
查看>>