P4318 完全平方數

2022-03-04 05:57:29 字數 2253 閱讀 4697

小 x 自幼就很喜歡數。但奇怪的是,他十分討厭完全平方數。他覺得這些數看起來很令人難受。由此,他也討厭所有是完全平方數的正整數倍的數。然而這絲毫不影響他對其他數的熱愛。

這天是小x的生日,小 w 想送乙個數給他作為生日禮物。當然他不能送乙個小x討厭的數。他列出了所有小x不討厭的數,然後選取了第 k個數送給了小x。小x很開心地收下了。

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

輸入格式:

包含多組測試資料。檔案第一行有乙個整數 tt ,表示測試資料的組數。 第 22 至第 t+1t+1 行每行有乙個整數 k_iki​,描述一組資料,含義如題目中所描述。

輸出格式:

含t 行,分別對每組資料作出回答。第 ii 行輸出相應的第 k_iki​個不是完全平方數的正整數倍的數。

輸入樣例#1: 

4 

1 13

100

1234567

輸出樣例#1: 

1 

19 163

2030745

對於 50%的資料有 1≤ki​≤105 , 對於 100%的資料有 1≤ki​≤109

,t≤50

solution:

本題zyys。

題意就是求第$k$個沒有完全平方數因子的數,所謂數$x$的完全平方數因子就是$i^2|x,i\in z^+,i\neq 1$。

一眼可以想到,直接線性列舉,然後每次$\sqrt n$求約數判斷,這樣能水分,但是切不了本題。

此時,因為答案顯然單調遞增,考慮二分答案,然後判斷$[1,x]$中的滿足條件的數個數是否等於$k$。

對於$x$以內的無平方因子數=$0$個質數的平方的倍數的個數(即$1$的倍數)-$1$個質數的平方的倍數的個數(即$4,9,16…$的倍數)+$2$個質數的乘積的平方的倍數的個數(即$36,100,225…$的倍數)……

不難發現,整個式子其實就是容斥原理的體現,我們可以線篩求出莫比烏斯函式,那麼最後的答案就是$ans= \sum \limits_^}\rfloor}$。

那麼線篩只要$\sqrt\leq 40000$,然後二分邊界$l=k,r=k\times 2$就好了(顯然$k$以內最多就是每個數都是無平方因子數,而$2\times k$內的質數大約$\ln 個$,大約有$\sum\limits_^},i)}$個,貌似是大於$k$的吧!)

然後直接求就好了。

我這裡想騷操作一波,所以就對求的式子進行了數論分塊,那麼只需處理出$\mu$的字首和就好了,然後對$\lfloor}\rfloor$進行數論分塊求。

事實證明,因為$i\leq 40000$,所以優化效果並不特別明顯。(暴力和優化一樣快)

暴力時間複雜度$o(\log n\times \sqrt n)$,優化理論複雜度$o(\log n \times \sqrt)$

**:

#include#define il inline

#define ll long long

#define re register

#define for(i,a,b) for(int (i)=(a);(i)<=(b);(i)++)

#define bor(i,a,b) for(int (i)=(b);(i)>=(a);(i)--)

#define max(a,b) ((a)>(b)?(a):(b))

#define min(a,b) ((a)>(b)?(b):(a))

const ll n = 40005

;int mu[n+5],prime[n+5

],cnt,t,k,m;

bool isprime[n+5

],f;

il ll gi()

using

namespace

std;

il bool

check(ll x)

return ans>=k;

}il

void

solve()

if(check(l))printf("

%lld\n

",l);

else printf("

%lld\n

",r);

}int

main()

}for(i,

1,n) mu[i]+=mu[i-1

]; t=gi();

while(t--)

return0;

}

P4318 完全平方數

想不出什麼辦法能直接算的 別跟我提分塊打表 不如二分答案吧 設 f x sum n i不是 完全平方數 顯然f x 與x正相關。再結合篩法 容斥,不難得到 f x sum mu i lfloor frac rfloor 找到那個滿足f x k的x就行了。include define int long...

P4318 完全平方數

gate 計算第 k 個不含完全平方因子的數。利用容斥原理,計算時,需要減去 2 2,3 2,5 2.加上 6 2,10 2,15 2.減去 30 2.即,ans n n 含 1 個質因子平方的數 含 2 個質因子平方的數 含 3 個質因子平方的數 可以看出,容斥係數即為 mu i 當 i 2 n ...

洛谷p4318 完全平方數

小 x 自幼就很喜歡數。但奇怪的是,他十分討厭完全平方數。他覺得這些數看起來很令人難受。由此,他也討厭所有是完全平方數的正整數倍的數。然而這絲毫不影響他對其他數的熱愛。這天是小x的生日,小 w 想送乙個數給他作為生日禮物。當然他不能送乙個小x討厭的數。他列出了所有小x不討厭的數,然後選取了第 k個數...