خیلی ممنون
فقط اگر یه توضیحی هم درباره الگوریتمش بدین، که منطقش چه جوریه خیلی خوب میشه.
این هم از کدش به زبان C++‎:

int fib(int n)
{
int i,j,k,h,t;
i=1; j=0; k=0; h=1; j=0;
while (n>0)
{
if (n%2==1)
{
t=j*h;
j=i*h+j*k+t;
i=i*k+t;
}
t=h*h;
h=2*k*h+t;
k=k*k+t;
n=n / 2;
}
return j;
}