I.cpp 796 B

123456789101112131415161718192021222324252627282930313233343536
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long LL;
  4. LL MOD = 1000000007L;
  5. inline bool prime(int n) {
  6. if (n == 2)return true;
  7. if (n < 2 || n % 2 == 0)return false;
  8. for (int i = 3; i <= n / i; i += 2)
  9. if (n % i == 0)return false;
  10. return true;
  11. }
  12. inline int log(int n, int base) {
  13. if (n < base)return 0;
  14. return 1 + log(n / base, base);
  15. }
  16. int main() {
  17. int n;
  18. cin >> n;
  19. map<int, int> M;
  20. M[2] = log(n, 2);
  21. for (int i = 3; i <= n; i += 2) {
  22. if (prime(i))
  23. M[i] = log(n, i);
  24. }
  25. LL ans = 1LL;
  26. for (auto m:M) {
  27. for (int i = 1; i <= m.second; i++)//如果指数很大,可以用快速幂
  28. ans = (ans * m.first) % MOD;
  29. }
  30. cout << ans << endl;
  31. return 0;
  32. }