Skip to content

Commit 6d2be5e

Browse files
committed
atcoder/abc052C
1 parent ebcf502 commit 6d2be5e

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

atcoder/abc052/C/main.cpp

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
#include <bits/stdc++.h>
2+
3+
using namespace std;
4+
using ll = long long;
5+
6+
ll const MOD = 1e9+7;
7+
int const M = 1e3+1;
8+
9+
set<int> seive() {
10+
vector<bool> is_prime(M, true);
11+
is_prime[0] = is_prime[1] = false;
12+
for (int i = 2; i * i <= M; ++i) {
13+
if (!is_prime[i]) continue;
14+
for (int j = i * 2; j < M; j += i) {
15+
is_prime[j] = false;
16+
}
17+
}
18+
19+
set<int> primes;
20+
for (int i = 2; i < M; ++i) {
21+
if (is_prime[i]) {
22+
primes.insert(i);
23+
}
24+
}
25+
return primes;
26+
}
27+
28+
ll solve(int N) {
29+
auto primes = seive();
30+
vector<int> factors(M, 0);
31+
for (int i = N; i >= 2; --i) {
32+
int v = i;
33+
for (auto p : primes) {
34+
while (v % p == 0) {
35+
v /= p;
36+
++factors[p];
37+
}
38+
}
39+
}
40+
41+
ll ans = 1;
42+
for (int i = 0; i < M; ++i) {
43+
ans = (ans * (factors[i]+1)) % MOD;
44+
}
45+
return ans;
46+
}
47+
48+
int main() {
49+
ios_base::sync_with_stdio(false);
50+
cin.tie(0); cout.tie(0);
51+
52+
int N;
53+
cin >> N;
54+
cout << solve(N) << endl;
55+
56+
return 0;
57+
}

0 commit comments

Comments
 (0)