Pagini recente » Cod sursa (job #1399262) | Cod sursa (job #266045) | Cod sursa (job #2187235) | Cod sursa (job #1180556) | Cod sursa (job #1648598)
#include <iostream>
#include <fstream>
#define MOD 666013
using namespace std;
ifstream f("kfib.in");
ofstream g("kfib.out");
void pow(int n, int &a11, int &a12, int &a21, int &a22)
{
if(n%2==0)
{
int b11=a11, b12=a12, b21=a21, b22=a22;
pow(n/2,b11,b12,b21,b22);
a11=(b11*b11+b12*b21)%MOD;
a12=(b11*b12+b12*b22)%MOD;
a21=(b21*b11+b22*b21)%MOD;
a22=(b21*b12+b22*b22)%MOD;
}
else if(n!=1 && n%2==1)
{
int b11=a11, b12=a12, b21=a21, b22=a22;
int c11, c12, c21, c22;
pow(n-1,b11,b12,b21,b22);
c11=(a11*b11+a12*b21)%MOD;
c12=(a11*b12+a12*b22)%MOD;
c21=(a21*b11+a22*b21)%MOD;
c22=(a21*b12+a22*b22)%MOD;
a11=c11; a12=c12; a21=c21; a22=c22;
}
}
int main()
{
int n, a11=0, a12=1, a21=1, a22=1; f>>n;
if(n==1||n==2) g<<1;
else
{
pow(n-2,a11,a12,a21,a22);
g<<(a12+a22)%MOD;
}
return 0;
}