Pagini recente » Cod sursa (job #1478887) | Cod sursa (job #1150881) | Cod sursa (job #2323231) | Cod sursa (job #1707164) | Cod sursa (job #1789149)
#include <iostream>
using namespace std;
#define MOD 666013
long long n, m[2][2];
long long res[2][2];
inline void inmultire(long long a[2][2], long long b[2][2]){
long long 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])%MOD + (a[0][1] * b[1][0]) % MOD)%MOD;
aux[0][1]=((a[0][0] * b[0][1])%MOD + (a[0][1] * b[1][1])%MOD)%MOD;
aux[1][0]=((a[1][0] * b[0][0])%MOD + (a[1][1] * b[1][0])%MOD)%MOD;
aux[1][1]=((a[1][0] * b[0][1])%MOD + (a[1][1] * b[1][1])%MOD)%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;
m[0][0] = 0;
res[0][1] = res[1][0] = res[1][1] = 1;
res[0][0] = 0;
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(i);
cout << res[0][0] << " ";
}