From f3f7465f3eb8bbfe07abc721dfa8f39c65a939bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Sat, 16 Dec 2023 14:41:34 +0800 Subject: [PATCH] 'commit' --- TangDou/Topic/Mobius/P4318.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/TangDou/Topic/Mobius/P4318.cpp b/TangDou/Topic/Mobius/P4318.cpp index 073318c..8fa3082 100644 --- a/TangDou/Topic/Mobius/P4318.cpp +++ b/TangDou/Topic/Mobius/P4318.cpp @@ -1,5 +1,7 @@ #include using namespace std; +#define int long long +#define endl "\n" const int N = 100010; // 筛法求莫比乌斯函数(枚举约数) @@ -26,22 +28,22 @@ void get_mobius(int n) { // 维护u(x)前缀和:梅滕斯函数 for (int i = 1; i <= n; i++) sum[i] = sum[i - 1] + mu[i]; } -long long check(long long g) { - long long res = 0; +int check(int g) { + int res = 0; for (int i = 1; i * i <= g; i++) res = res + mu[i] * (g / i / i); return res; } -int main() { +signed main() { get_mobius(N - 1); int t, k; cin >> t; while (t--) { cin >> k; - long long l = 1, r = 2e9, mid, vt; + int l = 1, r = 2e9, mid, vt; while (l <= r) { mid = (l + r) / 2; vt = check(mid); @@ -52,5 +54,4 @@ int main() { } cout << r + 1 << endl; } - return 0; }