BZOJ 2440 中山市選2011 完全平方數

2021-07-30 12:27:04 字數 1207 閱讀 9236

小 x 自幼就很喜歡數。但奇怪的是,他十分討厭完全平方數。他覺得這些

數看起來很令人難受。由此,他也討厭所有是完全平方數的正整數倍的數。然而

這絲毫不影響他對其他數的熱愛。 

這天是小x的生日,小 w 想送乙個數給他作為生日禮物。當然他不能送一

個小x討厭的數。他列出了所有小x不討厭的數,然後選取了第 k個數送給了

小x。小x很開心地收下了。 

然而現在小 w 卻記不起送給小x的是哪個數了。你能幫他一下嗎?

包含多組測試資料。檔案第一行有乙個整數 t,表示測試

資料的組數。 

第2 至第t+1 行每行有乙個整數ki,描述一組資料,含義如題目中所描述。 

含t 行,分別對每組資料作出回答。第 i 行輸出相應的

第ki 個不是完全平方數的正整數倍的數。

4 1

13 100

1234567

1 19

163

2030745

對於 100%的資料有 1 ≤ ki ≤ 10^9

,    t ≤ 50

一年前做過,但是現在根本想不起來。

題目大意:求第k個無平方因子數

首先想到二分答案,某神犇證明上界是2*k,不是很懂。

•根據容斥原理可知 對於sqrt(x)以內所有的質數 有

•  x以內的無平方因子數

•=0個質數乘積的平方的倍數的數的數量(1的倍數)

•-每個質數的平方的倍數的數的數量(9的倍數,25的倍數,...)

•+每2個質數乘積的平方的倍數的數的數量(36的倍數,100的倍數,...)-...

前面的係數剛好就是μ()。

#include#include#includeusing namespace std;

const int n=500005;

int t,n=50000,tot,miu[n],p[n];

long long k;

bool vis[n];

long long tst(long long x)

int main()

else

miu[i*p[j]]=-miu[i];

} }scanf("%d",&t);

while(t--)

printf("%lld\n",l);

} return 0;

}

bzoj2440 中山市選2011 完全平方數

time limit 10 sec memory limit 128 mb submit 2219 solved 1067 submit status discuss description 小 x 自幼就很喜歡數。但奇怪的是,他十分討厭完全平方數。他覺得這些 數看起來很令人難受。由此,他也討厭所有...

BZOJ2440 中山市選2011 完全平方數

求第k個非完全平方數 先二分一下,問題變成1 x有多少個非完全平方數,知道平方數的集合,可以容斥一下 為了敘述方便,下文乙個數可代表其平方的倍數的集合 被乙個集合包含的只有質數,被兩個集合包含的是質因數個數為2的數 而且所有考慮的數都不含平方因子,可以發現和 一樣,被考慮進去的數的 值就是他的係數 ...

bzoj2440 中山市選2011 完全平方數

莫比烏斯函式的應用 首先二分答案轉成判定性問題,判定乙個 1,n 有多少數不是完全平方數的倍數。乙個數是完全平方數的充要條件是它包含了某個素數的平方。那麼應用容斥,符合條件的數的個數 n n4 n 9 n25 n36.容易發現,如果乙個數是某個素數的平方,那麼它的係數一定是 1 如果是兩個素數平方的...