1 条题解
-
0
莫比乌斯函数解释:
- 当 时,;
- 当 是 个不同质数的乘积时,;
- 当 有平方因子时(即存在质数 使得 整除 ),。
所以,按题意模拟即可。
AC code:
#include <bits/stdc++.h> using namespace std; long long mobius_sum(int n) { vector<int> mu(n + 1, 0); vector<int> primes; vector<bool> is_prime(n + 1, true); mu[1] = 1; for (int i = 2; i <= n; ++i) { if (is_prime[i]) { primes.push_back(i); mu[i] = -1; } for (int p : primes) { if (i * p > n) break; is_prime[i * p] = false; if (i % p == 0) { mu[i * p] = 0; break; } else { mu[i * p] = -mu[i]; } } } long long sum = 0; for (int i = 1; i <= n; ++i) { sum += mu[i]; } return sum; } int main() { int n; cin >> n; long long result = mobius_sum(n); cout << result << endl; return 0; }
- 1
信息
- ID
- 142
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 4
- 标签
- 递交数
- 8
- 已通过
- 3
- 上传者