bzoj 2440 完全平方數
參考popoqqq神的ppt
首先二分答案 問題轉化為求[1,x]之間有多少個無平方因子數
根據容斥原理可知 對於sqrt(x)以內所有的質數 有
x以內的無平方因子數
=0個質數乘積的平方的倍數的數的數量(1的倍數)
-每個質數的平方的倍數的數的數量(9的倍數,25的倍數,…)
+每2個質數乘積的平方的倍數的數的數量(36的倍數,100的倍數,…)-…
容易發現每個乘積a前面的符號恰好是 μ(
a)(例如μ(
3)=−
1 ,故9對答案的貢獻為負;μ(
6)=1
,故36對答案的貢獻為正)
x以內i
2 的倍數有⌊x
i2⌋ 個 故有q(
x)=∑
⌊x√⌋
i=1⌊
xi2⌋
#include
using
namespace
std;
typedef
long
long ll;
const
int n= 1e6+10;
int prime[n],tot;
int mu[n];
void mu()
for (int j=1;prime[j]*i1;
if (i%prime[j]==0)
mu[i*prime[j]]=-mu[i];}}
//for (int i=1;i<=100;i++) printf("%d %d\n",i,mu[i]);
}ll calc(ll mid)
return ans;
}void work()
cout
return
0;}
BZOJ 2440 完全平方數(莫比烏斯函式)
這道題需要驚人的聯想能力和很大的腦洞 然後將它聯絡到莫比烏斯函式上。我也是看神犇的部落格的。首先容易想到二分答案,然後判斷當前的滿足條件的數。具體怎樣得出的請大家自己yy吧。include include include includeusing namespace std 利用莫比烏斯函式求值 d...
bzoj 2440 完全平方數 莫比烏斯函式
題目 題意 第ki 個不是完全平方數的正整數倍的數。對於乙個數t,t以內的數里的非完全平方數倍數的個數 num 1的倍數的數量 乙個質數平方數 9,25,49.的倍數的數量 兩個質數的積平方數 36,100,225.的數量 三個質數balabala 所以u i 就是莫比烏斯函式 求莫比烏斯函式 遞推...
BZOJ 2440 完全平方數
time limit 10 sec memory limit 128 mb submit 966 solved 457 submit status 小 x 自幼就很喜歡數。但奇怪的是,他十分討厭完全平方數。他覺得這些 數看起來很令人難受。由此,他也討厭所有是完全平方數的正整數倍的數。然而 這絲毫不影...