diff --git a/TangDou/AcWing/RongChi/HDU2204_2.cpp b/TangDou/AcWing/RongChi/HDU2204_2.cpp index 1648749..dda01df 100644 --- a/TangDou/AcWing/RongChi/HDU2204_2.cpp +++ b/TangDou/AcWing/RongChi/HDU2204_2.cpp @@ -2,27 +2,27 @@ using namespace std; #define ll long long const int N = 100 + 100; -ll mu[N * 100], prim[N * 100], check[N * 100]; -int tot; +ll mu[N * 100], primes[N * 100], st[N * 100]; +int cnt; void get_mobius() { mu[1] = 1; for (int i = 2; i < N; i++) { - if (!check[i]) { - prim[tot++] = i; + if (!st[i]) { + primes[cnt++] = i; mu[i] = -1; } - for (int j = 0; j < tot; j++) { - if (prim[j] > N / i) { + for (int j = 0; j < cnt; j++) { + ll t = primes[j] * i; + if (primes[j] > N / i) { break; } - check[i * prim[j]] = 1; - if (i % prim[j] == 0) { - mu[i * prim[j]] = 0; + st[t] = 1; + if (i % primes[j] == 0) { + mu[t] = 0; break; - } else { - mu[i * prim[j]] = -mu[i]; } + mu[t] = -mu[i]; } } }