Pagini recente » Cod sursa (job #408791) | Cod sursa (job #1726668) | Cod sursa (job #861794) | Cod sursa (job #1237250) | Cod sursa (job #1410625)
#include <iostream>
#include <fstream>
using namespace std;
#define base 100000000
unsigned long long nr[400];
int l=1;
ifstream in("patrate2.in");
ofstream out("patrate2.out");
void mult (unsigned long long &x)
{
unsigned long long r=0;
int i;
for(i=1;i<=l;i++)
{
nr[i]*=x;
nr[i]+=r;
r=(nr[i]-nr[i]%base)/base;
nr[i]%=base;
}
if(r!=0)
{
l++;
nr[l]=r;
}
}
inline int nrcif(unsigned long long x)
{
int nr=1;
x/=10;
while(x)
{
x/=10;
nr++;
}
return nr;
}
int main()
{
int exp,p;
int n;
unsigned long long x;
in>>n;
exp=n*n;
p=26;
x=1<<p;
nr[1]=1;
while( exp )
{
while(exp<p)
{
x>>=1;
p--;
}
mult(x);
exp-=p;
}
while(n>4)
{
x=n*(n-1)*(n-2)*(n-3);
n-=4;
mult(x);
}
if(n==4)
x=24,mult(x);
if(n==3)
x=6,mult(x);
if(n==2)
x=2,mult(x);
out<<nr[l];
l--;
while(l)
{
n=nrcif(nr[l]);
while(n<8)
{
out<<0;
n++;
}
out<<nr[l];
l--;
}
}