Pagini recente » Cod sursa (job #1150843) | Cod sursa (job #2671649) | Cod sursa (job #517769) | Cod sursa (job #1936210) | Cod sursa (job #127595)
Cod sursa(job #127595)
#include <cstdio>
#include <fstream>
#define FIN "vecini.in"
#define FOUT "reuniune.out"
#define BAS 10000000
typedef struct
{
int n;
int d[150];
} bignum;
bignum ant1, ant2;
bignum N1, N2;
int N, i;
void add(bignum &a, bignum b, bignum c)
{
int i, t = 0;
a.n = 0;
memset (a.d, 0, sizeof (a.d));
for (i=1; i<=b.n || i<=c.n || t; i++, t/=BAS)
a.d[i] = (t += b.d[i] + c.d[i]) % BAS;
a.n = i - 1;
}
void shl(bignum &a)
{
int i, t = 0;
for (i = 1; i <= a.n || t; i++, t /= BAS)
a.d[i] = (t += a.d[i] * 2) % BAS;
a.n = i - 1;
}
void atr (bignum &a, bignum b)
{
a.n = b.n;
memcpy (a.d, b.d, sizeof (b.d));
}
int main ()
{
freopen (FIN, "r", stdin);
freopen (FOUT, "w", stdout);
// scanf ("%d", &N);
N = 2000;
ant1.n = ant2.n = 1;
ant1.d[1] = ant2.d[1] = 1;
for (i = 2; i <= N; ++i)
{
add (N1, ant1, ant2);
shl (ant1);
add (N2, ant1, ant2);
atr (ant1, N1);
atr (ant2, N2);
}
shl (ant1);
add (N1, ant1, ant2);
printf ("%d", N1.d[N1.n]);
for (i = N1.n - 1; i; --i)
printf ("%07d", N1.d[i]);
return 0;
}