onedrive, baidu
pan
,密码:6ug5\

# 莫比乌斯反演

## 莫比乌斯函数的性质

### (3)

\

\

mu[1]=1;
for(i=2;i<=n;i++){
if(!not_prime[i]){
prime[++tot]=i;
mu[i]=-1;
}
for(j=1;prime[j]*i<=n;j++){
not_prime[prime[j]*i]=1;
if(i%prime[j]==0){
mu[prime[j]*i]=0;
break;
}
mu[prime[j]*i]=-mu[i];
}
}


### 例题1:

#include<iostream>
#include<cstdio>
#include<cmath>
#define N 100005
using namespace std;
bool not_prime[N];
int prime[N];
int mu[N];
int tot;
void Mu(int n){
int i,j;
mu[1]=1;
for(i=2;i<=n;i++){
if(!not_prime[i]){
prime[++tot]=i;
mu[i]=-1;
}
for(j=1;prime[j]i<=n;j++){
not_prime[prime[j]i]=1;
if(i%prime[j]==0){
mu[prime[j]i]=0;
break;
}
mu[prime[j]i]=-mu[i];
}
}
}
int can(int x){
int sum=0;
int s=floor(sqrt(x));
for(int i=1;i<=s;++i)
if(mu[i])
sum+=mu[i]floor(x/(ii));
return sum;
}
int main(){
Mu(N);int T,sum;
scanf("%d",&T);
while(T--){
scanf("%d",&num);
long long l=1,r=num<<1,mid;
while(l<r){
mid=(l+r)>>1;
if(can(mid)<num)
l=mid+1;
else r=mid;
}
printf("%lld\n",r);
}
return 0;
}


## 莫比乌斯反演的应用

#### 例:

f(n)表示某一范围内(x,y)=n的数对的数量，\

F(n)表示某一范围内n|(x,y)的数对的数量\

### 例题2:

BZOJ 2301 Problem

b

if(a>b)swap(a,b);
for(i=1;i<=a;i=last+1){
last=min(a/(a/i),b/(b/i));
re+=(a/i)(a/i)(sum[last]-sum[i-1]);
}
return re;


#include<iostream>
include<cstdio>
include<cmath>
define N 50005
define inf 0x7fffffff
using namespace std;
bool not_prime[N];
int prime[N];
int sum[N];
int mu[N];
int tot;
void Mu(int n){
int i,j;
mu[1]=1;
for(i=2;i<=n;i++){
if(!not_prime[i]){
prime[++tot]=i;
mu[i]=-1;
}
for(j=1;prime[j]i<=n;j++){
not_prime[prime[j]i]=1;
if(i%prime[j]==0){
mu[prime[j]i]=0;
break;
}
mu[prime[j]i]=-mu[i];
}
}
for(int i=1;i<=n;++i)
sum[i]=sum[i-1]+mu[i];
}
int ans(int n,int m){
if(n>m)swap(n,m);
int last,i,re=0;
for(i=1;i<=n;i=last+1){
last=min(n/(n/i),m/(m/i));
re+=(n/i)(m/i)(sum[last]-sum[i-1]);
}
return re;
}
int main(){
Mu(N);
int T;
int a,b,c,d,k;
scanf("%d",&T);
while(T--){
scanf("%d%d%d%d%d",&a,&b,&c,&d,&k);
a--;c--;
a/=k;b/=k;c/=k;d/=k;
int Ans=ans(b,d)-ans(a,d)-ans(b,c)+ans(a,c);
printf("%d\n",Ans);
}
return 0;
}


BZOJ 10s但是luogu却莫名WA\

### 例题3

BZOJ 2820

YY的GCD
\

[1] baike:莫比乌斯反演是数论数学中很重要的内容，可以用于解决很多组合数学的问题。

[2]

[3] 无平方因子数(Square-Free

Number)，即分解之后所有质因数的次数都为1的数

posted @ 2017-12-09 21:43  Grary  阅读(...)  评论(...编辑  收藏