洛谷 P4318 完全平方數 二分 容斥

2022-05-12 02:38:28 字數 824 閱讀 7349

首先我們可以二分答案。然後轉變為判斷 \(mid\) 以內不討厭的數和 \(k\) 的關係。

\(mid\) 以內不討厭的數= \(mid\)

\(-\)

\(mid\) 以內討厭的數

對於討厭的數我們可以列舉 \(i\),看 \(i^2\) 會造成多少個討厭的數,顯然是 \(\displaystyle \left \lfloor \frac \right \rfloor\)

然後我們發現會有重複列舉的(像 \(36\) 會被 \(2,3,6\) 都列舉到),需要乘上乙個容斥係數 \(f[i]\).

\(f[i]\) 取決於 \(i\) 有多少個質因數,奇數個為 \(1\) ,偶數個為 \(-1\) 。

這很好理解,比如乙個數 \(n\) ,會被有乙個質因數的 \(i\) 列舉的時候加上,被有偶數個質因數的 \(i\) 列舉的時候會發現減多了,列舉有 \(3\) 個質因數的 \(i\) 時還得加回來...

#include#include#define ll long long

using namespace std;

int t, tot;

ll n, k, ans, l, r, mid;

int zhi[100010], f[100010], vis[100010];

void yych() }}

void dfs(int x, int beg, int js)

}int check(ll n)

signed main()

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

} return 0;

}

洛谷p4318 完全平方數

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

洛谷P4318 完全平方數

求自然數中,第 k 個不含平方因子的數 這道題的做法還挺多的 打表,二分,反演.我用的做法是二分 容斥 顯然答案滿足二分性,假設當前檢驗的數為 n 沒有平方因子的數 所有數 乙個質數平方的因子的倍數 兩個質數乘積平方的倍數 三個的.對於乙個數 i 2 可以發現 mu i 就是 i 2 在上面那個式子...

洛谷P4318 完全平方數

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