Pagini recente » Istoria paginii runda/oni_2017_cl10_ziua2 | Cod sursa (job #1185219) | Cod sursa (job #1896573) | Cod sursa (job #1095435) | Cod sursa (job #1788437)
#include <iostream>
using namespace std;
#define MOD 666013
int n, m[2][2];
int res[2][2];
inline void inmultire(int a[2][2], int b[2][2]){
int aux[2][2];
aux[0][0]=aux[1][0]=aux[0][1]=aux[1][1]=0;
aux[0][0]=(a[0][0] * b[0][0] + a[0][1] * b[1][0])%MOD;
aux[0][1]=(a[0][0] * b[0][1] + a[0][1] * b[1][1])%MOD;
aux[1][0]=(a[1][0] * b[0][0] + a[1][1] * b[1][0])%MOD;
aux[1][1]=(a[1][0] * b[0][1] + a[1][1] * b[1][1])%MOD;
a[0][0] = aux[0][0];
a[0][1] = aux[0][1];
a[1][1] = aux[1][1];
a[1][0] = aux[1][0];
}
inline void lgput(int n){
m[0][1] = m[1][0] = m[1][1] = 1;
res[0][1] = res[1][0] = res[1][1] = 1;
while (n) {
if (n % 2) {
inmultire(res, m);
n--;
}
inmultire (m, m);
n/=2;
}
}
int main(){
freopen("kfib.in","r", stdin);
freopen("kfib.out", "w", stdout);
int n;
cin >> n;
lgput(n);
cout << res[0][0];
}