Pagini recente » Cod sursa (job #743934) | Istoria paginii runda/ojipreg | Cod sursa (job #2020737) | Cod sursa (job #2718262) | Cod sursa (job #1857006)
///fiecare nuamr poate avea -
///pentru fiecare conficugratie valida genram comb(n*n, 0) + comb(n * n, 1)..., comb(n * n, n * n);
///nr conf valide: -(n) * (n - 1)- : n!;
///exceptie 1 : 2
/**
2
1 5
5 1
5 1
1 5
1
5
3
1 1 5
1 5 1
5 1 1
1 1 5
5 1 1
1 5 1
1 5 1
5 1 1
1 1 5
1 5 1
5 1 1
1 1 5
5 1 1
1 5 1
1 1 5
5 1 1
1 1 5
1 5 1
4
5 1 1 1
1 5 1 1
1 1 5 1
1 1 1 5
5 1 1 1
1 1 5 1
1 5 1 1
1 1 1 5
5 1 1 1
1 1 5 1
1 1 1 5
1 5 1 1
**/
#include <cstdio>
using namespace std;
FILE *f, *g;
int n;
int rez[40000];
void readFile()
{
f = fopen("patrate2.in", "r");
fscanf(f, "%d", &n);
fclose(f);
}
inline int mxa(int a, int b)
{
return (a > b ? a : b);
}
void aduna(int c[], int a[], int b[])
{
int i, j;
int mx = mxa(a[0], b[0]);
int t = 0;
for(i = 1; i <= mx || (t > 0); i ++)
{
t = a[i] + b[i] + t;
c[i] = t % 10;
t /= 10;
}
c[0] = i - 1;
}
void inmultesteScalar(int a[], int nr)
{
int t = 0;
int i;
for(i = 1; i <= a[0] || (t > 0); i ++)
{
t = a[i] * nr + t;
a[i] = t % 10;
t /= 10;
}
a[0] = i - 1;
}
void copyV(int a[], int b[])
{
int i, j;
for(i = 0; i <= b[0]; i ++)
{
a[i] = b[i];
}
}
/*
void getComb()
{
int i, j;
comb[2][1][0] = comb[2][1][1] = 1;
comb[2][0][0] = comb[2][0][1] = 1;
int n2 = n * n;
for(i = 2; i <= n2; i ++)
{
for(j = 0; j <= i; j ++)
{
if(j == 0 || (i == j))
{
comb[1][j][0] = comb[1][j][1] = 1;
}
else
{
aduna(comb[1][j], comb[2][j - 1], comb[2][j]);
}
}
for(j = 0; j <= i; j ++)
{
copyV(comb[2][j], comb[1][j]);
}
}
}
*/
void scrie(int rez[])
{
int i;
for(i = rez[0]; i >= 1; i --)
printf("%d", rez[i]);
printf("\n");
}
void solve()
{
if(n == 1)
rez[0] = 1, rez[1] = 2;
else
{
rez[0] = rez[1] = 1;
int n2 = n * n;
int i;
for(i = 1; i <= n2; i ++)
inmultesteScalar(rez, 2);//, scrie(comb[1][i]);
for(i = 2; i <= n; i ++)
inmultesteScalar(rez, i);
}
}
void printFile()
{
g = fopen("patrate2.out", "w");
int i;
for(i = rez[0]; i >= 1; i --)
{
fprintf(g, "%d", rez[i]);
}
fclose(g);
}
int main()
{
readFile();
solve();
printFile();
return 0;
}