Pagini recente » Cod sursa (job #2397085) | Cod sursa (job #1008274) | Cod sursa (job #2661828) | Cod sursa (job #1364352) | Cod sursa (job #2389134)
#include <fstream>
using namespace std;
ifstream in("kfib.in");
ofstream out("kfib.out");
int n,sol;
struct mat
{
int a11,a12,a22,a21;
}a,aux;
mat inmultire(mat a,mat b)
{
mat c;
c.a11=a.a11*b.a11+ a.a12*b.a21;
c.a12=a.a11*b.a12 + a.a12*b.a22;
c.a21=a.a21*b.a11 + a.a22*b.a21;
c.a22=a.a21*b.a12 + a.a22*b.a22;
return c;
}
int main()
{
in>>n;
n--;
a.a11=1;
a.a12=1;
a.a21=1;
a.a22=0;
aux = a;
aux.a22=1;
int k=0;
while((1<<k)<=n)
{
if((1<<k)&n)
aux=inmultire(aux,a);
k++;
a=inmultire(a,a);
}
sol=aux.a11+aux.a21;
out<<sol;
return 0;
}