Pagini recente » Cod sursa (job #350033) | Cod sursa (job #1208181) | Cod sursa (job #516168) | Cod sursa (job #334551) | Cod sursa (job #1850837)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("nunta.in");
ofstream g("nunta.out");
const int SIZE = 100;
/*int a[2][2], sol[2][2];
int c[2][2];*/
int a1[SIZE], a2[SIZE], cc[SIZE], n;
void inmm(int k, int a[]) {
int i, t = 0;
for (i = 1; i <= a[0] || t; i++) {
t += a[i]*k;
cc[i] = t%10;
t /= 10;
}
cc[0] = i-1;
memcpy(a, cc, sizeof(cc));
}
void adun(int a[], int b[]) {
int i, t = 0;
memset(cc, 0, sizeof(cc));
for (i = 1; i <= max(a[0], b[0]) || t; i++) {
t += a[i]+b[i];
cc[i] = t%10;
t /= 10;
}
cc[0] = i-1;
memcpy(a, cc, sizeof(cc));
}
/*
void inm(int a[2][2], int b[2][2]) {
int i, j, k;
for (i = 0; i < 2; i++)
for (j = 0; j < 2; j++) {
c[i][j] = 0;
for (k = 0; k < 2; k++)
c[i][j] += a[i][k]*b[k][j];
}
memcpy(a, c, sizeof(c));
}*/
int main() {
f >> n;
if (n < 3) { g << n; return 0;}
a1[0] = a1[1] = 1;
a2[0] = 1, a2[1] = 2;
/*a[0][1] = a[1][0] = a[1][1] = 1;
sol[0][0] = sol[1][1] = 1;
n--;s
while (n) {
if (n%2)
inm(sol, a);
inm(a, a);
n/=2;
}
inmm(sol[0][0], a1);
inmm(sol[0][1], a2);*/
while (n-- > 2)
adun(a1, a2);
for (int i = a1[0]; i >= 1; i--)
g << a1[i];
return 0;
}