Pagini recente » Cod sursa (job #1970321) | Cod sursa (job #627218) | Cod sursa (job #496458) | Cod sursa (job #1980790) | Cod sursa (job #2643709)
#include <cstdio>
#include <cstring>
using namespace std;
class HugeN
{
private:
int a[20000];
public:
HugeN(int x = 0)
{
memset(a , 0 , sizeof(a));
a[0] = 1;
a[1] = x;
}
HugeN operator*(const HugeN& b)
{
int i , j , tr , aux;
HugeN c;
c.a[0] = a[0] + b.a[0] - 1;
for(i = 1 ; i <= a[0] ; i ++)
for(j = 1 ; j <= b.a[0] ; j ++)
c.a[i + j - 1] += a[i] * b.a[j];
tr = 0;
for(i = 1 ; i <= c.a[0] ; i ++)
{
aux = c.a[i] + tr;
c.a[i] = aux % 10;
tr = aux / 10;
}
while(tr)
{
c.a[++ c.a[0]] = tr % 10;
tr /= 10;
}
return c;
}
HugeN operator*(const int& k)
{
int i , tr , aux;
HugeN c;
c.a[0] = a[0];
tr = 0;
for(i = 1 ; i <= c.a[0] ; i ++)
{
aux = tr + k * a[i];
c.a[i] = aux % 10;
tr = aux / 10;
}
while(tr)
{
c.a[++ c.a[0]] = tr % 10;
tr /= 10;
}
return c;
}
void get_number()
{
for(int i = a[0] ; i >= 1 ; i --)
printf("%d" , a[i]);
}
};
HugeN fast_pow(HugeN a , int p)
{
HugeN aa(1);
for( ; p ; p = (p >> 1))
{
if(p & 1)
aa = aa * a;
a = a * a;
}
return aa;
}
int main()
{
freopen("patrate2.in" , "r" , stdin);
freopen("patrate2.out" , "w" , stdout);
int n , i;
HugeN sol(1) , aux(2);
scanf("%d" , &n);
for(i = 1 ; i <= n ; i ++)
sol = sol * i;
sol = sol * fast_pow(aux , n * n);
sol.get_number();
return 0;
}