main
黄海 2 years ago
parent 8b53f3aad5
commit f3f7465f3e

@ -1,5 +1,7 @@
#include <bits/stdc++.h> #include <bits/stdc++.h>
using namespace std; using namespace std;
#define int long long
#define endl "\n"
const int N = 100010; const int N = 100010;
// 筛法求莫比乌斯函数(枚举约数) // 筛法求莫比乌斯函数(枚举约数)
@ -26,22 +28,22 @@ void get_mobius(int n) {
// 维护u(x)前缀和:梅滕斯函数 // 维护u(x)前缀和:梅滕斯函数
for (int i = 1; i <= n; i++) sum[i] = sum[i - 1] + mu[i]; for (int i = 1; i <= n; i++) sum[i] = sum[i - 1] + mu[i];
} }
long long check(long long g) { int check(int g) {
long long res = 0; int res = 0;
for (int i = 1; i * i <= g; i++) for (int i = 1; i * i <= g; i++)
res = res + mu[i] * (g / i / i); res = res + mu[i] * (g / i / i);
return res; return res;
} }
int main() { signed main() {
get_mobius(N - 1); get_mobius(N - 1);
int t, k; int t, k;
cin >> t; cin >> t;
while (t--) { while (t--) {
cin >> k; cin >> k;
long long l = 1, r = 2e9, mid, vt; int l = 1, r = 2e9, mid, vt;
while (l <= r) { while (l <= r) {
mid = (l + r) / 2; mid = (l + r) / 2;
vt = check(mid); vt = check(mid);
@ -52,5 +54,4 @@ int main() {
} }
cout << r + 1 << endl; cout << r + 1 << endl;
} }
return 0;
} }

Loading…
Cancel
Save