[51nod1244]莫比烏斯函式之和
Description
求
\sum_{i=l}^{r}\mu(i)
l,r<=10^10
Solution
設
M(n)=\sum_{i=1}^{n}\mu(i)
我們知道,
\sum_{d|n}\mu(d)=[n=1]
那麼
1=\sum_{i=1}^{n}\sum_{d|i}\mu(d)
=\sum_{T=1}^{n}\sum_{d|T}\mu(d)
=\sum_{i=1}^{n}\sum_{d=1}^{\lfloor{n\over i}\rfloor}\mu(d)
\sum_{i=1}^{n}M(\lfloor{n\over i}\rfloor)
於是,
M(n)=1-\sum_{i=2}^{n}M(\lfloor{n\over i}\rfloor)
後面的東西可以用分塊來加速。
然後打上記憶化標記。
或者可以先預處理出一段的字首和,這樣會快一點。
Code
#include<cstdio>
#include<cstring>
#include<algorithm>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define rep(i,a) for(int i=last[a];i;i=next[i])
#define N 5000000
using namespace std;
typedef long long ll;
const int mo=6666666;
int mu[N+5],p[N+5],cnt;
int last[mo],next[mo],v[mo];
ll t[mo],l,r;
bool bz[N+5];
void add(int x,ll y,int z) {
t[++cnt]=y;v[cnt]=z;next[cnt]=last[x];last[x]=cnt;
}
int calc(ll x) {
if (x<=N) return mu[x];int ans=1,k=x%mo;
rep(i,k) if (t[i]==x) return v[i];
for(ll l=2,r;l<=x;l=r+1) r=x/(x/l),ans-=calc(x/l)*(r-l+1);
add(k,x,ans);
return ans;
}
int main() {
fo(i,2,N) {
if (!bz[i]) p[++p[0]]=i,mu[i]=-1;
fo(j,1,p[0]) {
int k=i*p[j];if (k>N) break;
bz[k]=1;if (!(i%p[j])) break;
mu[k]=-mu[i];
}
}
mu[1]=1;fo(i,1,N) mu[i]+=mu[i-1];
scanf("%lld%lld",&l,&r);printf("%d",calc(r)-calc(l-1));
}
相關文章
- 莫比烏斯函式函式
- 三角函式之和差角公式函式公式
- BZOJ 2818 Gcd (莫比烏斯反演 或 尤拉函式)GC函式
- 三角函式之和差化積公式函式公式
- 一種方便的證明莫比烏斯函式的方法函式
- 51nod1040 最大公約數之和 (尤拉函式 )函式
- 階乘之和取後六位以及有趣的計時函式。函式
- FZU 1969 && UVA 11426 GCD Extreme (尤拉函式 或 莫比烏斯反演)GCREM函式
- 數論線性篩總結 (素數篩,尤拉函式篩,莫比烏斯函式篩,前n個數的約數個數篩)函式
- MySQL函式大全(字串函式,數學函式,日期函式,系統級函式,聚合函式)MySql函式字串
- 莫比烏斯反演
- Oracle 函式大全(字串函式,數學函式,日期函式,邏輯運算函式,其他函式)Oracle函式字串
- 【函式式 Swift】函式式思想函式Swift
- python中id()函式、zip()函式、map()函式、lamda函式Python函式
- 【函式】Oracle函式系列(2)--數學函式及日期函式函式Oracle
- Python 擴充之特殊函式(lambda 函式,map 函式,filter 函式,reduce 函式)Python函式Filter
- 第7章 IF函式 COUNTIF函式 SUMIF函式函式
- 字元函式、數字函式和日期函式字元函式
- 【函式】Oracle EXTRACT()函式與to_char() 函式函式Oracle
- MySQL(四)日期函式 NULL函式 字串函式MySql函式Null字串
- 【函式】ORACLE函式大全函式Oracle
- (譯) 函式式 JS #2: 函式!函式JS
- 核函式 多項式核函式 高斯核函式(常用)函式
- 函式名/函式地址/函式指標函式指標
- 第 8 節:函式-匿名函式、遞迴函式函式遞迴
- lambda匿名函式sorted排序函式filter過濾函式map對映函式函式排序Filter
- js函式 函式自呼叫 返回函式的函式 (閉包)JS函式
- main函式的入口函式AI函式
- (函式)實現strstr函式函式
- 字串函式之Strtok()函式字串函式
- SQL函式之日期函式SQL函式
- Oracle聚合函式/分析函式Oracle函式
- fork函式與vfork函式函式
- 常用函式--時間函式函式
- ORACLE單行函式與多行函式之七:多行函式之分組函式示例Oracle函式
- 函式式JavaScript(4):函式柯里化函式JavaScript
- 箭頭函式、簡寫函式、普通函式的區別函式
- Oracle OCP(03):字元函式、數字函式和日期函式Oracle字元函式