Pagini recente » Cod sursa (job #65243) | Cod sursa (job #2872310) | Cod sursa (job #2763191) | Cod sursa (job #3170062) | Cod sursa (job #2329773)
#include <fstream>
#include <vector>
#define MOD 666013
using namespace std;
ifstream in("kfib.in");
ofstream out("kfib.out");
void Multiply (vector<vector<long long> >&A, vector<vector<long long> >&B)
{
int row = A.size();
int col = A[0].size();
vector<vector<long long> > C(row, vector<long long>(col));
for (int i = 0; i < row; i++)
for (int j = 0; j < 2; j++)
for (int w = 0; w < 2; w++)
C[i][j] = (C[i][j] + A[i][w] * B[w][j]) % MOD;
for (int i = 0; i < row; i++)
for (int j = 0; j < col; j++)
A[i][j] = C[i][j];
}
int main()
{
int n;
in >> n;
vector<vector<long long> > Sol(1, vector<long long>(2));
vector<vector<long long> > Mat(2, vector<long long>(2));
Mat[0][0] = 0;
Mat[0][1] = 1;
Mat[1][0] = 1;
Mat[1][1] = 1;
Sol[0][0] = 0;
Sol[0][1] = 1;
for (int i = 0; (1<<i) <= n; i++)
{
if ((1<<i)&n)
Multiply(Sol, Mat);
Multiply(Mat, Mat);
}
out << Sol[0][0];
return 0;
}