Pagini recente » Cod sursa (job #2173055) | Cod sursa (job #1686289) | Cod sursa (job #2863082) | Cod sursa (job #2513342) | Cod sursa (job #829234)
Cod sursa(job #829234)
#include <cstdio>
#include <iostream>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <bitset>
#include <algorithm>
#include <sstream>
#include <iomanip>
#include <cmath>
#include <cstdlib>
#include <ctype.h>
#include <cstring>
#include <ctime>
#include <cassert>
using namespace std;
#define MAXN 1001
#define MOD 999017
int N;
int nrEgale[MAXN];
int main() {
freopen("sortari2.in", "r", stdin);
freopen("sortari2.out","w", stdout);
scanf("%d", &N);
nrEgale[0] = nrEgale[1] = 1;
for(int i = 2; i <= N; i++) {
// 1 si 2 la inceput
nrEgale[i] = 2 * nrEgale[i - 1];
for(int j = 3; j <= i; j++) {
// j la inceput
// j 1 2 3 ... j-2 ...
nrEgale[i] += nrEgale[i - (j - 1)];
if(nrEgale[i] >= MOD)
nrEgale[i] -= MOD;
}
}
int nrTotal = 1;
for(int i = 2; i <= N; i++)
nrTotal = (nrTotal * i) % MOD;
int ans = (nrTotal - nrEgale[N] + MOD) % MOD;
printf("%d\n", ans);
return 0;
}