Pagini recente » Cod sursa (job #186181) | Cod sursa (job #597154) | Cod sursa (job #2820779) | Cod sursa (job #117478) | Cod sursa (job #807053)
Cod sursa(job #807053)
// 2^(n^2) * n!
// calculez 2^(n^2) prin inmultiri succesive cu 2^3
#include<fstream>
using namespace std;
#define DIMMAX 10010
int n;
int sol[DIMMAX], lgsol;
void read()
{
ifstream fin("patrate2.in");
fin >> n;
fin.close();
}
void inmultireMic(int a[], int &lga, int nr)
{
int i, cifra, t = 0;
//parcurgem si inmultim
for (i=0; i<lga; ++i)
{
cifra = a[i] * nr + t;
t = cifra / 10;
a[i] = cifra % 10;
}
//daca mai avem transport, il adaugam la rezultat
while (t != 0)
{
a[lga++] = t % 10;
t = t / 10;
}
}
void solve()
{
int i;
sol[0] = 1; lgsol = 1;
for (i=1; i<=n*n/3; ++i)
inmultireMic(sol, lgsol, 8);
for (i=1; i<=n*n % 3; ++i)
inmultireMic(sol, lgsol, 2);
for (i=2; i<=n; ++i)
inmultireMic(sol, lgsol, i);
}
void write()
{
int i;
ofstream fout("patrate2.out");
for (i=lgsol-1; i>=0; --i)
fout<<sol[i];
fout<<'\n';
fout.close();
}
int main()
{
read();
solve();
write();
return 0;
}