2440 中山市選2011 完全平方數

2022-04-06 17:13:57 字數 1490 閱讀 6462

time limit: 10 sec  memory limit: 128 mb

submit: 4838  solved: 2340

[submit][status][discuss]

小 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

莫比烏斯函式的乙個應用。

首先二分答案,問題轉化為求[1,x]之間有多少個無平方因子數。

根據容斥原理,答案就是

0個素數的乘積的平方的倍數的數量(1的倍數)-1個素數的乘積的平方的倍數的數量(9的倍數,25的倍數)+2個素數的乘積的平方的倍數的數量(36的倍數(2*3=6,6*6=36),100的倍數)....

發現每個乘積a前面的係數就是μ(a)

$q(x)=\sum\limits_^\biggr\rfloor}μ(i)\biggl\lfloor\frac\biggr\rfloor$

參考 popoqqq的文章

1 #include2 #include3

4const

int n = 100000

;5 typedef long

long

ll;6

7int prime[n+10],mu[n+10];8

bool noprime[n+10];9

inttot,t;

10ll k;

1112

void

getmu()

19 mu[i * prime[j]] = -mu[i];20}

21}22}

2324

bool check(int

x) 29

return ans >=k;30}

3132

intmain ()

43 printf("

%lld\n

",ans);44}

45return0;

46 }

2440 中山市選2011 完全平方數

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

2440 中山市選2011 完全平方數

題目鏈結 題目大意 求第k個不含有平方數因子 這裡不包括1 的數 題解 明顯沒法直接求,二分一下,需要求1 mid中不含有平方數因子的數的個數無平 方因子 i 0莫比烏 斯函式大 力容斥一 波 枚 舉mid 中的所 有質數,num 0個質數 平方的倍 數的數量 1的倍 數 1 個質數平 方的倍數 的...

bzoj2440 中山市選2011 完全平方數

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