Pagini recente » Cod sursa (job #1276597) | Cod sursa (job #1660320) | Cod sursa (job #2800934) | Cod sursa (job #1838202) | Cod sursa (job #1852833)
#include <cstdio>
#define MOD 1048576;
using namespace std;
FILE *f, *g;
int n;
//int stk[20], k, ap[20], cnt[20];
int dp[5];
inline int poz(int a)
{
return (a < 0 ? (-a) : a);
}
void readFile()
{
f = fopen("12perm.in", "r");
fscanf(f, "%d", &n);
fclose(f);
}
/*
void verif(int k)
{
memset(ap, 0, sizeof(ap));
int i;
for(i = 1; i <= k; i ++)
{
if(stk[i] > k)
return;
if(ap[stk[i]] == 1)
return;
ap[stk[i]] = 1;
if(i < k && poz(stk[i + 1] - stk[i]) >= 3)
return;
}
cnt[k] ++;
}*/
int lib = 4, ant = 3, ant2 = 2, ant3 = 1;
void solve()
{
/*int k = 1;
stk[k] = 0;
while(k > 0)
{
if(stk[k] < 9)
{
stk[k] ++;
verif(k);
if(k < 9)
k ++, stk[k] = 0;
}
else
k --;
}*/
dp[1] = 2;
dp[2] = 6;
dp[3] = 12;
int i, aux;
for(i = 4; i < n; i ++)
{
dp[lib] = dp[ant] + dp[ant3] + 2 * (i + 1 - 2);
dp[lib] %= MOD;
aux = lib;
lib = ant3;
ant3 = ant2;
ant2 = ant;
ant = aux;
}
}
void printFile()
{
g = fopen("12perm.out", "w");
int i;
/* for(i = 1; i <= 9; i ++)
{
printf("%d\n", c[i]);
}
*/
if(n > 4)
fprintf(g, "%d\n", dp[ant]);
else
{
int rez = 1;
for(i = 1; i <= n; i ++)
rez *= i;
if(n == 4)
rez /= 2;
fprintf(g, "%d\n", rez);
}
fclose(g);
}
int main()
{
readFile();
solve();
printFile();
return 0;
}