Pagini recente » Cod sursa (job #2338621) | Cod sursa (job #2093611) | Cod sursa (job #1496205) | Cod sursa (job #2665411) | Cod sursa (job #3209348)
#include <bits/stdc++.h>
using namespace std;
int ocupat, n, ans[3000000], ans2[3000000], aux[3000000];
void inm(int a[], int x)
{
int t = 0;
for (int i = 1; i <= a[0]; i++)
{
a[i] = a[i] * x + t;
t = a[i] / 10;
a[i] %= 10;
}
while (t)
{
a[++a[0]] = t % 10;
t /= 10;
}
}
void inmultire_nrmare(int a[], int b[], int c[])
{
c[0] = a[0] + b[0] - 1;
for(int i = 1; i <= a[0] + b[0]; i++)
c[i] = 0;
for(int i = 1; i <= a[0]; i++)
{
for(int j = 1; j <= b[0]; j++)
{
c[i + j - 1] += a[i] * b[j];
}
}
int t = 0;
for(int i = 1; i <= c[0]; i++)
{
c[i] = c[i] + t;
t = c[i] / 10;
c[i] = c[i] % 10;
}
if(t != 0)
{
c[0]++;
c[c[0]] = t;
}
}
void atribuire_nrmare(int a[], int b[]) {
//a <- b
a[0] = b[0];
for(int i = 1; i <= a[0]; i++) {
a[i] = b[i];
}
}
void afisare(int a[])
{
for (int i=a[0]; i >= 1; i--)
cout << a[i];
}
int main()
{
freopen("patrate2.in", "r", stdin);
freopen("patrate2.out", "w", stdout);
cin >> n;
if (n == 1)
{
cout << 2;
return 0;
}
int cn = n;
ans[0] = ans[1] = 1;
while (cn)
{
inm(ans, 2);
cn--;
}
cn = n - 1;
ans2[0] = ans2[1] = 1;
while (cn)
{
inm(ans2, 2);
cn--;
}
for (int i = 1; i <= n; i++)
{
inm(ans, (n - i + 1));
inmultire_nrmare(ans, ans2, aux);
atribuire_nrmare(ans, aux);
}
afisare(ans);
return 0;
}
/// Sa-mi bag toata cioaca in numere mari