Pagini recente » Cod sursa (job #1917938) | Cod sursa (job #705474) | Cod sursa (job #1511094) | Cod sursa (job #2625402) | Cod sursa (job #2640188)
#include <bits/stdc++.h>
#define MOD 666013
using namespace std;
ifstream ci("kfib.in");
ofstream cou("kfib.out");
long long n;
//mi = m1 * z^i-1
long long v[3][3];//sol fin
long long sol[3][3];//sol la fct aia
long long p[3][3];
void afis(long long t[3][3]){
for(long long i=1;i<=2;i++){
for(long long j=1;j<=2;j++){
cout<<t[i][j]<<" ";
}
cout<<"\n";
}
}
void ridicamatrice(long long a[3][3],long long b[3][3]){
sol[1][1]=a[1][1]*b[1][1]+a[1][2]*b[2][1];
sol[1][2]=a[1][1]*b[1][2]+a[1][2]*b[2][2];
sol[2][1]=a[2][1]*b[1][1]+a[2][2]*b[1][2];
sol[2][2]=a[1][2]*b[2][1]+a[2][2]*b[2][2];
}
void ridlaput(long long put){
//calc z^i-1
//p = solutia
//v = x
while(put){
if(put%2==1){
ridicamatrice(p,v);
p[1][1]=sol[1][1]%MOD;
p[2][1]=sol[2][1]%MOD;
p[1][2]=sol[1][2]%MOD;
p[2][2]=sol[2][2]%MOD;
}
put=put/2;
ridicamatrice(v,v);
//sol e v^2;
v[1][1]=sol[1][1]%MOD;
v[2][1]=sol[2][1]%MOD;
v[1][2]=sol[1][2]%MOD;
v[2][2]=sol[2][2]%MOD;
}
}
int main()
{
ci>>n;
long long rez;
v[1][1]=0;
v[1][2]=1;
v[2][1]=1;
v[2][2]=1;
p[1][1]=0;
p[1][2]=1;
p[2][1]=1;
p[2][2]=1;
ci>>n;
ridlaput(n-3);
//mi = m1 * z^i-1
//m1=(1,1)
rez=p[1][2]*1+p[2][2]*1;
cou<<rez;
return 0;
}