Cod sursa(job #1759808)

Utilizator fanache99Constantin-Buliga Stefan fanache99 Data 19 septembrie 2016 21:03:45
Problema Sortari2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>
#include <queue>
#include <map>
#include <set>

using namespace std;

ifstream cin("sortari2.in");
ofstream cout("sortari2.out");

const int MAXN = 1000;
const int MOD = 999017;

int dp[1 + MAXN];

int main() {
    int n, answer = 1;
    cin >> n;
    dp[0] = dp[1] = 1;
    for (int i = 2; i <= n; i++) {
        answer = ((long long) answer * i) % MOD;
        dp[i] = dp[i - 1] * 2;
        if (dp[i] >= MOD)
            dp[i] -= MOD;
        for (int j = 3; j <= i; j++) {
            dp[i] += dp[i - j + 1];
            if (dp[i] >= MOD)
                dp[i] -= MOD;
        }
    }
    answer -= dp[n];
    if (answer < 0)
        answer += MOD;
    cout << answer << "\n";
    return 0;
}