洛谷P4318 完全平方數

2022-03-16 23:58:10 字數 698 閱讀 8901

求自然數中,第\(k\)個不含平方因子的數

這道題的做法還挺多的(打表,二分,反演...)

我用的做法是二分+容斥

顯然答案滿足二分性,假設當前檢驗的數為\(n\)

沒有平方因子的數=所有數-乙個質數平方的因子的倍數+兩個質數乘積平方的倍數-三個的.......

對於乙個數\(i^2\),可以發現\(\mu (i)\)就是\(i^2\)在上面那個式子中的係數,所以上式可以表示為$$ans=\sum_}$$

一遍\(check\)是\(\sqrt \),所以整個演算法複雜度為\(o(logn\sqrt )\)

#include#define n 50005

using namespace std;

typedef long long ll;

int t;

int p[n],mu[n],cnt;

ll k;

bool isnotp[n];

template void read(t &x)

void init(int maxn)

else mu[i*p[j]]=-mu[i];

} }}bool check(ll x)//[1,x]>=k ?

int main()

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

} return 0;

}

洛谷p4318 完全平方數

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

洛谷P4318 完全平方數

題目大意 求第 k 個無平方因子數。題解 第 k 小 大的問題一般採用二分的方式,通過判定從 1 到當前數中滿足某一條件的數有多少個來進行對上下邊界的轉移。考慮莫比烏斯函式的定義,根據函式值將整數分成了三類,第一類是有平方因子的數,第二類是無平方因子且質因子個數為奇數的數,第三類是無平方因子且質因子...

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...