BZOJ2005 NOI2010 能量采集 欧拉函数
生活随笔
收集整理的這篇文章主要介紹了
BZOJ2005 NOI2010 能量采集 欧拉函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:求$\sum\limits_{i = 1}^N {\sum\limits_{j = 1}^M {f(i,j)} } $,其中f(i,j)=(0,0)與(i,j)連線上點的數量
題解:
如果一個點(x',y')在(0,0)與(x,y)的連線上,則有gcd(x',y')==gcd(x,y)。因此f(i,j)=(gcd(i',j')=gcd(i,j))且i'<i,j'<j的點的數量。
由于題目中不需要統計(x,y)本身,所以計算出的2*ans=ANS+N*M=>ANS=2*ans-N*M。
現在我們來看如何求ans,我們枚舉倍數i,則滿足x%i==0 && y%i==0的點(x,y)的數量就有(N/i)*(M/i)個,而對于每個這樣的點,其與(0,0)連線上的點就有phi(i)個,因此
ans=sum(phi(i)*(N/i)*(M/i))
然后用分塊就可以將復雜度降為sqrt(N)
?
轉載于:https://www.cnblogs.com/WDZRMPCBIT/p/6444703.html
總結
以上是生活随笔為你收集整理的BZOJ2005 NOI2010 能量采集 欧拉函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CoreAnimation (CALay
- 下一篇: 20155230 2016-2017-2