File tree 1 file changed +57
-0
lines changed 1 file changed +57
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments