Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- const ll MOD = 1e9 + 7;
- int minPrime[10000001];
- ll binpow(ll a, ll b) {
- if (b == 0) return 1;
- ll t = binpow(a, b / 2);
- t = (t * t) % MOD;
- if (b % 2) return (t * a) % MOD;
- return t;
- }
- void solve() {
- int n; cin >> n;
- vector<int> a(n + 1);
- for (int i = 1; i <= n; i++) {
- int j = i;
- while (j != 1) {
- a[minPrime[j]]++;
- j /= minPrime[j];
- }
- }
- ll ans = 1;
- for (int i = 1; i <= n; i++) {
- ans *= binpow(i, a[i] - a[i] % 2);
- ans %= MOD;
- }
- cout << ans << '\n';
- }
- int main() {
- cin.tie(0)->sync_with_stdio(0);
- for (int i = 2; i <= 10000000; i++) {
- if (minPrime[i]) continue;
- for (int j = i; j <= 10000000; j += i) {
- if (!minPrime[j]) minPrime[j] = i;
- }
- }
- int T = 1; cin >> T;
- while (T--) solve();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement