BZOJ4804 尤拉心算

2022-02-28 16:50:28 字數 2298 閱讀 1849

給出乙個數字n

第一行為乙個正整數t,表示資料組數。

接下來t行為詢問,每行包含乙個正整數n。

t<=5000,n<=10^7

按讀入順序輸出答案。110

莫比烏斯反演。

還有一種用尤拉函式的神仙做法

\[\begin

&\sum_^\sum_^n\phi((i,j))\\

&=\sum_^\phi(d)\sum_^\sum_^n[(i,j)=d]\\

&=\sum_^\phi(d)\sum_^\rfloor}\sum_^\rfloor}\sum_\mu(k)\\

&=\sum_^\phi(d)\sum_^\rfloor}\lfloor\frac\rfloor^2\mu(k)

\end

\]這樣可以做到單次詢問\(o(n)\),可以繼續推下去

\[\begin

&設t=kd\\

&\sum_^\phi(d)\sum_^\rfloor}\lfloor\frac\rfloor^2\mu(k)\\

&=\sum_^\lfloor\frac\rfloor^2\sum_\mu(k)\phi(\frac)\\

\end

\]發現後面那個玩意是個狄利克雷卷積形式,所以這玩意是個積性函式,上線性篩

當\(t\)為質數時

\[\begin

&\sum_\mu(k)\phi(\frac)\\

&=\mu(1)*\phi(t)+\mu(t)*\phi(1)\\

&=t-1-1\\

&=t-2

\end

\]當\(t\)為質數的平方時

\[\begin

&\sum_\mu(k)\phi(\frac)\\

&=\phi(p)*\mu(p)+\phi(p^2)*\mu(1)\\

&=-(p-1)+p(p-1)\\

&=-p+1+p^2-p\\

&=p^2-2p+1\\

&=(p-1)^2

\end

\]當\(t\)為質數的\(c\)次方時(\(c>2\))

\[\begin

&設c=3\\

&\sum_\mu(k)\phi(\frac)\\

&=\phi(p^3)*\mu(1)-\phi(p^2)*\mu(p)+0\\

&=p^3-p^2-p^2+p\\

&=p^3-2p^2+p\\

&=p(p^2-2p+1)\\

&=p(p-1)^2

\end

\]同理可得當\(t=p^c(c>2)\)時,該函式的值為\(p^(p-1)^2\)

但是有這個\(p=2\)有點麻煩,所以我們不妨直接分類討論這兩種情況

設以上討論的那個函式為\(f\)

根據積性函式的定義即可

\[f(i*prime[j])=f(i)*f(prime[j])

\]當\(i\)中\(prime[j]\)的指數為\(1\)時,對應上方的\(t=p^2\)的情況

(注:因為指數為\(1\),所以\(i/prime[j]\)與\(prime[j]\)互質)

\[\begin

&f(i*prime[j])\\

&=f(i/prime[j])*f(prime[j]^2)\\

&=f(i/prime[j])*(prime[j]-1)^2

\end

\]當\(i\)中\(prime[j]\)的質數大於\(1\)時,對應上方\(t=p^c(c>2)\),將結論代入即可

\[\begin

&f(i*prime[j])\\

&=f(i)*prime[j]\\

\end

\](注:因為\(f(i)\)其實就是\(t=p^\)的情況,所以直接按照上方的結論乘上p即可)

然後就做完了

複雜度\(o(n+t\sqrt)\)

#include using namespace std;

typedef long long ll;

const int n = 1e7 + 10;

ll p[n];

ll n, cnt;

ll f[n], sum[n];

bool vis[n];

inline void init()

f[i * p[j]] = f[i] * f[p[j]];

} }for(int i = 1; i < n; ++i) f[i] += f[i - 1];

}inline ll calc(ll n)

return ans;

}int main()

}

尤拉心算 bzoj4804

問題 b 尤拉心算 bzoj4804 時間限制 2 sec 記憶體限制 256 mb 提交 74 解決 28 提交 狀態 題目描述 description 給出乙個數字n input 第一行為乙個正整數t,表示資料組數。接下來t行為詢問,每行包含乙個正整數n。t 5000,n 10 7 output...

BZOJ4804 尤拉心算

作者部落格 正解 莫比烏斯反演 解題報告 比較簡單的莫烏題,都是老套路了,最後設 q gt 可以根號回答一次詢問。注意後面那個積性函式的遞推公式!邊界不要漏了!it is made by ljh2000 有志者,事竟成,破釜沉舟,百二秦關終屬楚 苦心人,天不負,臥薪嘗膽,三千越甲可吞吳。includ...

4804 尤拉心算

4804 尤拉心算 time limit 15 sec memory limit 256 mb submit 229 solved 147 submit status discuss description 給出乙個數字n 第一行為乙個正整數t,表示資料組數。接下來t行為詢問,每行包含乙個正整數n。...