日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

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

生活随笔

當(dāng)前位置: 首頁(yè) >

题解:LCM

發(fā)布時(shí)間:2024/1/17 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 题解:LCM 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題意:

推式子

我們考慮把這個(gè)式子的形式轉(zhuǎn)變一下

首先,分別整除可以轉(zhuǎn)變成他們的 \(gcd\) 整除

其次,考慮整除一個(gè)平方項(xiàng),我們可以聯(lián)想到一個(gè)歐拉函數(shù) \(\mu\)

于是,我們要求的式子就變成了

\[ \sum_{a=1}^A \sum_{b=1}^B [\mu(gcd(a,b))\neq 0] \frac{a*b}{gcd[a,b]} \]

很明顯這里就是一個(gè)莫比烏斯反演的式子,然后按照套路把 \(gcd\) 提出來(lái)

\[ \sum_{\mu(k) \ neq 0 } \frac{1}{k} \sum_{a=1}^A \sum_{b=1}^B [gcd(a,b)==k] \frac{a*b}{gcd[a,b]} \]

\[ \sum_{\mu(k) \ neq 0 } k \sum_{a=1}^{\frac{A}{k}} \sum_{b=1}^{\frac{A}{k}} [gcd(a,b)==k] a*b \]

然后接下來(lái)的一部分和簡(jiǎn)單數(shù)學(xué)題一樣,把后面的部分進(jìn)行莫比烏斯反演,然后帶回來(lái),得到

\[ Ans=\sum_{\mu(k) \ neq 0 } k \sum_{d=1}^{\frac{A}{k}} \mu(d) S\Big( \Big\lfloor \frac{n}{kd} \Big\rfloor \Big)^2 \]

按照套路 \(T=kd\)

\[ Ans=\sum_{T=1}^A S\Big(\Big\lfloor \frac{A}{T} \Big\rfloor \Big)^2 \sum_{d|T \mu(k) \neq 0 } \mu \Big(\frac{T}ozvdkddzhkzd\Big) \Big(\frac{T}ozvdkddzhkzd\Big)^2 d \]

到了這一步,我們已經(jīng)基本上可以做了,打一個(gè)簡(jiǎn)單的 \(nlogn\) 的篩加上整除分塊,復(fù)雜度就變成了 \(nlogn+T\sqrt{n}\) ,常數(shù)優(yōu)秀一點(diǎn)就可以切掉了,但是我們還有更優(yōu)秀的線性篩

考慮可以把式子的后半部分表示成為

\[ g(T)=\sum_{d|T} \Big(\frac{T}ozvdkddzhkzd\Big) \Big(\frac{T}ozvdkddzhkzd\Big)^2 d *f(d) \]

當(dāng)\(T\) 是質(zhì)數(shù)的時(shí)候

\[ g(T) = \mu(1) * 1 * x * f(x) + \mu(x) * x^2 * f(x)=x-x^2 \]

對(duì)于不是質(zhì)數(shù)的部分,我們考慮因式分解

\[ x=p_1^{q_1} p_2^{q_2} ....... p_k^{q_k} \]

我們發(fā)現(xiàn),當(dāng) \(q_i >3\) \(f(x)=0\)

那么,我們假設(shè)插入一個(gè)數(shù) \(p_1\)

這時(shí)候,當(dāng) \(q_1>1~~ f(p_1*x)=0\)

否則 ,就可以表示成為:

\[ g(x*p_1)=g(p_i^2)*g(p_2^{q_2}......p_k^{q_k}) \]

這兩個(gè)式子一定是互質(zhì)的,于是,我們就可以得到

\[ g(p_1^2)=\mu(p_1)*p_1^2*p_1*f(p_1)=-p_1^3 \]

然后我們就可以線性篩了

#include <bits/stdc++.h>using namespace std; #define re register #define gc getchar() inline int read() {re int x=0,f(1);re char ch=gc;while(ch<'0'||ch>'9') {if(ch=='-') f=-1;ch=gc;}while(ch>='0'&&ch<='9') x=(x<<1)+(x<<3)+(ch^48),ch=gc;return x*f; } #define ll long longconst int N=4e6+10,mod=1<<30; ll n,cn[N],pri[N],vis[N],cnt; ll s[N],po[N];void get(int n) {s[1]=cn[1]=1;for(int i=2;i<=n;++i){if (!vis[i]) po[i]=pri[++cnt]=i,s[i]=i-i*i,cn[i]=1;for(int j=1;j<=cnt&&i*pri[j]<=n;++j){vis[i*pri[j]]=1;if(i%pri[j]==0){cn[i*pri[j]]=cn[i]+1;po[i*pri[j]]=po[i];//*pri[j];if (cn[i]==1)s[i*pri[j]]=-(ll)pri[j]*pri[j]*pri[j]*s[i/po[i]];else s[i*pri[j]]=0;break;}else{s[i*pri[j]]=s[i]*s[pri[j]];po[i*pri[j]]=pri[j];cn[i*pri[j]]=1;}}}for(int i=2;i<=n;++i)s[i]+=s[i-1]; }ll ans;inline ll S(ll x) {return x*(x+1)/2;}int main() {int T=read();get(N-10);while(T--){ans=0;int a=read(),b=read();for(int l=1,r;l<=min(a,b);l=r+1){r=min(a/(a/l),b/(b/l));ans+=(1LL*S(a/l)*S(b/l)*(s[r]-s[l-1]));}cout<<(ans%mod+mod)%mod<<endl;}return 0; }

轉(zhuǎn)載于:https://www.cnblogs.com/zijinjun/p/11051142.html

總結(jié)

以上是生活随笔為你收集整理的题解:LCM的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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