Pagini recente » Cod sursa (job #2652794) | Cod sursa (job #635289) | Borderou de evaluare (job #2016078) | Cod sursa (job #1407704) | Cod sursa (job #2508454)
#include <bits/stdc++.h>
#define ll long long
#define all(a) (a).begin(), (a).end()
#pragma GCC optimize("O3")
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#define sz() size()
#define fr first
#define sc second
#define pb push_back
#define er erase
#define in insert
#define pi pair<int,int>
#define pii pair<pair<int,int>,int>
#define mp make_pair
#define int long long
#define rc(s) return cout<<s,0
#define rcc(s) cout<<s,exit(0)
using namespace std;
const int mod=1e9+7;
const int modx=998244353;
const int per=666013;
struct mat{
int rows,cols;
int arr[4][4];
mat operator*(mat &cappa){
mat sah;
sah.cols = cappa.cols;
sah.rows = rows;
for(int i = 1 ; i <= rows ; i++)
for(int j = 1 ; j <= cappa.cols; j++)sah.arr[i][j] = 0;
for(int i = 1 ; i <= rows ; i++){
for(int j = 1 ; j <= cappa.cols; j++){
for(int k = 1 ; k <= cols ; k++){
sah.arr[i][j] += arr[i][k]*cappa.arr[k][j];
sah.arr[i][j]%=per;
}
}
}
return sah;
}
};
ifstream fin("kfib.in");
ofstream fout("kfib.out");
int32_t main(){
ios_base::sync_with_stdio(false);cin.tie(0);cerr.tie(0);cout.tie(0);
srand(chrono::steady_clock::now().time_since_epoch().count());
mat fib;
fib.cols = 2;
fib.rows = 1;
fib.arr[1][1] = 1;
fib.arr[1][2] = 1;
mat A;
A.rows = 2;
A.cols = 2;
A.arr[1][1] = 0;
A.arr[1][2] = 1;
A.arr[2][1] = 1;
A.arr[2][2] = 1;
int n;
fin >> n;
--n;
for(int i=0;(1<<i)<=n;i++){
if(n&(1<<i)){
fib = fib * A;
}
A=A*A;
}
fout << fib.arr[1][1];
}