Submission #1150686

#TimeUsernameProblemLanguageResultExecution timeMemory
1150686haizentbergZapina (COCI20_zapina)C++20
0 / 110
0 ms320 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...