Pagini recente » Cod sursa (job #34441) | Cod sursa (job #1475638) | Cod sursa (job #3250939) | Cod sursa (job #465321) | Cod sursa (job #3209213)
#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 = 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 atrib(int a[], int b[]) {
/// a primeste b
for (int i = 0; i <= b[0]; i++)
a[i] = b[i];
for (int i=b[0] + 1; i <= a[0]; i++)
a[i] = 0;
}
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);
atrib(ans, aux);
}
afisare(ans);
return 0;
}
/// Sa-mi bag toata cioaca in numere mari