Cod sursa(job #543848)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 28 februarie 2011 17:39:20
Problema Sortari2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.54 kb
#include <stdio.h>

int n;
const int mod = 999017;

int rez (int x)
{
	int f1 = 2, f2 = 5, f3, i;
	
	if (x == 1)
		return f1;
	if (x == 2)
		return f2;
	for (i = 3; i <= x; i ++)
	{
		f3 = (3 * f2 - f1 + mod) % mod;
		f1 = f2;
		f2 = f3;
	}
	
	return f3;
}

int main ()
{
	freopen ("sortari2.in", "r", stdin);
	freopen ("sortari2.out", "w", stdout);
	
	scanf ("%d", &n);
	
	int i, p = 1;
	
	for (i = 2; i <= n; i ++)
		p = ((long long)p * i) % mod;
	
	printf ("%d\n", (p - rez (n - 1) + mod) % mod);
	return 0;
}