天天看點

LOJ #10202. 「一本通 6.2 練習 5」櫻花

#include <bits/stdc++.h>
#define

using namespace std;
typedef long long ll;
const int mod = 1e9 + 7;
ll cc[A], pri[A]; int n, cnt; bool bz[A];

int main(int argc, char const *argv[]) {
  cin >> n;
  for (int i = 2; i <= n; i++) {
    if (!bz[i]) pri[++cnt] = i;
    for (int j = 1; j <= cnt and i * pri[j] <= n; j++) {
      bz[i * pri[j]] = 1;
      if (i % pri[j] == 0) break;
    }
  }
  ll ans = 1;
  for (int i = 1; i <= cnt; i++) //算出每個質因子的出現個數↓↓↓
    for (ll j = pri[i]; j <= n; j *= pri[i]) cc[i] = (cc[i] + n / j) % mod;
  for (int i = 1; i <= cnt; i++) ans = ans * (cc[i] * 2 % mod + 1) % mod;
  cout << ans << endl;
}