Pagini recente » Cod sursa (job #2403366) | Cod sursa (job #2324921) | Cod sursa (job #193137) | Cod sursa (job #2438809) | Cod sursa (job #1819252)
#include <fstream>
#define MOD 666013
using namespace std;
ifstream fin("kfib.in");
ofstream fout("kfib.out");
struct MAT{
long long a11, a12, a22;
};
void inmul(MAT &A, MAT &B)
{
long long a11, a12, a22;
a11 = (A.a11 * B.a11 + A.a12 * B.a12) % MOD;
a12 = (A.a11 * B.a12 + A.a12 * B.a22) % MOD;
a22 = (A.a12 * B.a12 + A.a22 * B.a22) % MOD;
A.a11 = a11;
A.a12 = a12;
A.a22 = a22;
}
long long powExp(int n) {
MAT A = {0, 1, 1}, P = {1, 0, 1};
while (n > 0)
{
while(n % 2 == 0){
inmul(A, A);
n = n / 2;
}
inmul(P, A);
n = n - 1;
}
return P.a22;
}
int main()
{
int n;
fin>>n;
fout<<powExp(n - 1);
fin.close();
fout.close();
return 0;
}