51nod1244 莫比烏斯函式之和

2021-07-14 11:31:02 字數 1087 閱讀 1262

求∑i

=lrμ

(i)

l,r<=10^10設m

(n)=

∑i=1

nμ(i

) 我們知道,∑d

|nμ(

d)=[

n=1]

那麼1=

∑i=1

n∑d|

iμ(d

) =∑

t=1n

∑d|t

μ(d)

=∑i=1n∑

d=1⌊

ni⌋μ

(d)

∑i=1

nm(⌊

ni⌋)

於是,m(

n)=1

−∑i=

2nm(

⌊ni⌋

) 後面的東西可以用分塊來加速。

然後打上記憶化標記。

或者可以先預處理出一段的字首和,這樣會快一點。

#include

#include

#include

#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)

int calc(ll x)

int main()

}mu[1]=1;fo(i,1,n) mu[i]+=mu[i-1];

scanf("%lld%lld",&l,&r);printf("%d",calc(r)-calc(l-1));

}

51NOD 1244 莫比烏斯函式之和

基準時間限制 3 秒 空間限制 131072 kb 分值 320 難度 7級演算法題 莫比烏斯函式,由德國數學家和天文學家莫比烏斯提出。梅滕斯 mertens 首先使用 n miu n 作為莫比烏斯函式的記號。具體定義如下 如果乙個數包含平方因子,那麼miu n 0。例如 miu 4 miu 12 ...

51nod 1244 莫比烏斯函式之和

莫比烏斯函式,由德國數學家和天文學家莫比烏斯提出。梅滕斯 mertens 首先使用 n miu n 作為莫比烏斯函式的記號。具體定義如下 如果乙個數包含平方因子,那麼miu n 0。例如 miu 4 miu 12 miu 18 0。如果乙個數不包含平方因子,並且有k個不同的質因子,那麼miu n 1...

51nod1244 莫比烏斯函式之和

莫比烏斯函式,由德國數學家和天文學家莫比烏斯提出。梅滕斯 mertens 首先使用 n miu n 作為莫比烏斯函式的記號。具體定義如下 如果乙個數包含平方因子,那麼miu n 0。例如 miu 4 miu 12 miu 18 0。如果乙個數不包含平方因子,並且有k個不同的質因子,那麼miu n 1...