Pagini recente » Cod sursa (job #1435455) | Cod sursa (job #2703914) | Cod sursa (job #1562145) | Cod sursa (job #1715883) | Cod sursa (job #2242123)
#include <bits/stdc++.h>
using namespace std;
ifstream f("kfib.in");
ofstream g("kfib.out");
typedef tuple<long int,long int ,long int> matr;
int n;
const int M=666013;
matr operator *(matr a,matr b)
{
int x1,y1,z1,x2,y2,z2;
tie(x1,y1,z1)=a;
tie(x2,y2,z2)=b;
return make_tuple( (((x1%M)*(x2%M))%M + ((y1%M)*(y2%M))%M)%M, (((x1%M)*(y2%M))%M+ ((y1%M)*(z2%M))%M)%M, (((y1%M)*(y2%M))%M+ ((z1%M)*(z2%M))%M)%M );
}
matr fibonacci(matr a,int b)
{
if(b==0)return make_tuple(1,0,1);
if(!b%2)
{
matr c=fibonacci(a,b/2);
return c*c;
}
else return a*fibonacci(a,b-1);
}
int main()
{
matr a=make_tuple(1,1,0);
f>>n;
a=fibonacci(a,n);
cout<<(1<<31)-1;
g<<get<1>(a);
//g<<get<0>(a)<<' '<<get<1>(a)<<' '<<get<2>(a);
}