#include <stdio.h>
void fr(int n, int a[])
{
int tmp;
if (n == 0)
return;
tmp = a[0] * a[2] + 1;
a[2] = a[1];
a[1] = a[0];
a[0] = tmp;
fr(n - 1, a);
}
int f(int n)
{
int a[3] = { 1, 1, 1 };
if (n <= 2)
return 1;
fr(n - 2, a);
return a[0];
}
int main(void)
{
int k;
for (k = 0; k < 10; k++)
printf("f(%d) = %d\n", k
, f
(k
)); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp2b2lkIGZyKGludCBuLCBpbnQgYVtdKQp7CiAgaW50IHRtcDsKCiAgaWYgKG4gPT0gMCkKICAgIHJldHVybjsKCiAgdG1wID0gYVswXSAqIGFbMl0gKyAxOwogIGFbMl0gPSBhWzFdOwogIGFbMV0gPSBhWzBdOwogIGFbMF0gPSB0bXA7CgogIGZyKG4gLSAxLCBhKTsKfQoKaW50IGYoaW50IG4pCnsKICBpbnQgYVszXSA9IHsgMSwgMSwgMSB9OwoKICBpZiAobiA8PSAyKQogICAgcmV0dXJuIDE7CgogIGZyKG4gLSAyLCBhKTsKCiAgcmV0dXJuIGFbMF07Cn0KCmludCBtYWluKHZvaWQpCnsKICBpbnQgazsKICBmb3IgKGsgPSAwOyBrIDwgMTA7IGsrKykKICAgIHByaW50ZigiZiglZCkgPSAlZFxuIiwgaywgZihrKSk7CiAgcmV0dXJuIDA7Cn0K