日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

P2522-[HAOI2011]Problem b【莫比乌斯反演】

發(fā)布時(shí)間:2023/12/3 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 P2522-[HAOI2011]Problem b【莫比乌斯反演】 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

正題


題目大意

∑i=ab∑j=cd(gcd(i,j)==k)\sum_{i=a}^b\sum_{j=c}^d(gcd(i,j)==k)i=ab?j=cd?(gcd(i,j)==k)


解題思路

定義
f(i)=∑i=1n∑j=1m(gcd(i,j)==i)f(i)=\sum_{i=1}^n\sum_{j=1}^m(gcd(i,j)==i)f(i)=i=1n?j=1m?(gcd(i,j)==i)
然后計(jì)算f利用容斥計(jì)算答案

之后我們考慮如何計(jì)算
F(i)=∑dd∣if(i)F(i)=\sum^{d|i}_df(i)F(i)=ddi?f(i)
顯然可得出
F(i)=?ni??mi?F(i)=\lfloor\frac{n}{i}\rfloor\lfloor\frac{m}{i}\rfloorF(i)=?in???im??
然后莫比烏斯反演一下
f(i)=∑d∣iμ(dk)+F(d)f(i)=\sum_{d|i}\mu(\fracozvdkddzhkzd{k})+F(d)f(i)=di?μ(kd?)+F(d)
f(i)=∑d∣iμ(dk)+?nd??md?f(i)=\sum_{d|i}\mu(\fracozvdkddzhkzd{k})+\lfloor\frac{n}ozvdkddzhkzd\rfloor\lfloor\frac{m}ozvdkddzhkzd\rfloorf(i)=di?μ(kd?)+?dn???dm??
時(shí)間復(fù)雜度降低到O(n)O(n)O(n)
之后我們可以發(fā)現(xiàn)?nd?\lfloor\frac{n}ozvdkddzhkzd\rfloor?dn??只有2n2\sqrt n2n?種取值,那么?ni??mi?\lfloor\frac{n}{i}\rfloor\lfloor\frac{m}{i}\rfloor?in???im??最多就有2(n+m)2(\sqrt n+\sqrt m)2(n?+m?)種取值,我們可以直接計(jì)算這個(gè)范圍內(nèi)莫比烏斯函數(shù)的前綴和然后直接O(min{n,m})O(\sqrt {min\{n,m\}})O(min{n,m}?)計(jì)算答案


code

// luogu-judger-enable-o2 #include<cstdio> #include<algorithm> #define N 50000 #define ll long long using namespace std; ll miu[N+10],c,d,a,b,k,t; bool v[N+10]; void sumul() {for(ll i=1;i<=N;i++) miu[i]=1,v[i]=0;for(ll i=2;i<=N;i++){if(v[i]) continue;miu[i]=-1;for(ll j=2*i;j<=N;j+=i){v[j]=1;if((j/i)%i==0) miu[j]=0;else miu[j]*=-1;}}for(ll i=1;i<=N;i++)miu[i]+=miu[i-1]; } ll ask(ll n,ll m) {if(n>m) swap(n,m);ll last,re=0;n/=k;m/=k;for(ll i=1;i<=n;i=last+1){last=min(n/(n/i),m/(m/i));re+=(n/i)*(m/i)*(miu[last]-miu[i-1]);}return re; } int main() {sumul();scanf("%lld",&t);for(ll i=1;i<=t;i++){scanf("%lld%lld%lld%lld%lld",&a,&b,&c,&d,&k);printf("%lld\n",ask(b,d)+ask(a-1,c-1)-ask(a-1,d)-ask(b,c-1));} }

總結(jié)

以上是生活随笔為你收集整理的P2522-[HAOI2011]Problem b【莫比乌斯反演】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。