#include <iostream>
using namespace std;
const int MOD = 1e9 + 7;
const int MAX_N = 350;
long long fact[MAX_N + 1];
long long derange[MAX_N + 1];
void preprocess() {
fact[0] = 1;
for (int i = 1; i <= MAX_N; i++) {
fact[i] = (fact[i - 1] * i) % MOD;
}
if (MAX_N >= 1) derange[1] = 0;
if (MAX_N >= 2) derange[2] = 1;
for (int i = 3; i <= MAX_N; i++) {
derange[i] = ((i - 1) * (derange[i - 1] + derange[i - 2]) % MOD) % MOD;
}
}
int main() {
preprocess();
int N;
cin >> N;
long long result = (fact[N] - derange[N] + MOD) % MOD; // Ensure non-negative result
cout << result << endl;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |