Pagini recente » Cod sursa (job #2422819) | Cod sursa (job #2527111) | Cod sursa (job #1385908) | Cod sursa (job #2272347) | Cod sursa (job #2150119)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream fin ("kfib.in");
ofstream fout ("kfib.out");
const ll mod = 666013;
ll a[3][3];
void prll_matrice(ll a[3][3]){
for(ll i = 1; i<=2; ++i, cout << "\n")
for(ll j = 1; j<=2; ++j, cout << " ")
cout << a[i][j];
cout << "\n";
}
void cpy(ll from[3][3], ll to[3][3]){
for(ll i = 1; i<=2; ++i)
for(ll j = 1; j<=2; ++j)
to[i][j] = from[i][j] % mod;
}
void inmultire (ll a[3][3],ll b[3][3], ll c[3][3]){
for(ll i = 1; i<=2; ++i)
for(ll j = 1; j<=2; ++j){
c[i][j] = 0;
for(ll k = 1; k<=2; ++k)
c[i][j] += (a[i][k]%mod*b[k][j]%mod)%mod;
c[i][j] %= mod;
}
}
ll rez[3][3], n;
void inmlog(ll n){
ll temp[3][3];
for(; n; n >>= 1){
if(n & 1){
inmultire(rez, a, temp);
cpy(temp, rez);
}
inmultire(a, a, temp);
cpy(temp, a);
}
}
int main()
{
rez[1][1] = 1;
rez[1][2] = 0;
rez[2][1] = 0;
rez[2][2] = 1;
a[1][1] = 0;
a[1][2] = 1;
a[2][1] = 1;
a[2][2] = 1;
fin >> n;
inmlog(n - 1);
prll_matrice(rez);
fout << rez[2][2];
return 0;
}