P4318 完全平方數

2022-04-07 22:47:12 字數 992 閱讀 7621

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\)時,個數\(\dfrac=0\),顯然列舉的上界為\(\sqrt n\)。

需要整除分塊。

\[ans(n)=\sum_^\mu(i)\lfloor \frac\rfloor

\]二分答案,檢查是否有\(ans(mid) > k\)。

注意:這道題很多地方沒有給確定的範圍,所以最好一開始把陣列開的大一點,估算不出來的話就試一試...

code

#include#include#include#include#define mogeko qwq

using namespace std;

#define int long long

const int maxn = 5e4+10;

const int n = 5e4;

int t,k,ans,cnt;

int prime[maxn],mu[maxn];

bool vis[maxn];

void prime()

for(int j = 1;j <= cnt && i*prime[j] <= n;j++)

}}bool check(int x)

signed main()

else l = mid+1;

}printf("%lld\n",ans);

}return 0;

}

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 完全平方數

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

洛谷p4318 完全平方數

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