Pagini recente » Cod sursa (job #1780752) | Cod sursa (job #73500) | Cod sursa (job #306067) | Cod sursa (job #701948) | Cod sursa (job #2028853)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("sortari2.in"); ofstream fout ("sortari2.out");
// metoda 1 : nr inversiuni
// metoda 2 : suma (lg - 1) pt fiecare ciclu
typedef long long i64;
const int mod = 999017;
const int nmax = 1000;
i64 sol[nmax + 1]; // nr permutari de lg i cu m1 = m2
i64 c[nmax + 1]; // nr de ciclii de lg i cu i - 1 inversiuni
int main() {
int n;
fin >> n;
c[ 1 ] = 1;
c[ 2 ] = 1;
for (int i = 3; i <= n; ++ i) {
c[ i ] = c[i - 1] * 2 % mod;
}
sol[ 0 ] = 1;
for (int i = 1; i <= n; ++ i) {
for (int j = 1; j <= i; ++ j) {
sol[ i ] += sol[i - j] * c[ j ];
sol[ i ] %= mod;
}
}
i64 aux = 1;
for (int i = 1; i <= n; ++ i)
aux = aux * i % mod;
fout << (aux + mod - sol[ n ]) % mod << "\n";
fin.close();
fout.close();
return 0;
}