Pagini recente » Cod sursa (job #2116431) | Cod sursa (job #1605184) | Cod sursa (job #2907919) | Cod sursa (job #16246) | Cod sursa (job #1712547)
#include <fstream>
#define mod 666013
using namespace std;
ifstream fin("kfib.in");
ofstream fout("kfib.out");
int y[2][2]={1,0,0,1};
int z[2][2]={0,1,1,1};
int sol[2][2];
void Refresh ()
{
for (int i=0;i<2;i++)
for (int j=0;j<2;j++)
sol[i][j]=0;
}
int main()
{
int n;
fin >> n;
n--;
while (n>1)
{
if (n%2==0)
{
Refresh ();
for (int i=0;i<2;i++)
for (int j=0;j<2;j++)
for (int k=0;k<2;k++)
sol[i][j]=(sol[i][j] + 1LL * z[i][k] * z[k][j])%mod;
for (int i=0;i<2;i++)
for (int j=0;j<2;j++)
z[i][j]=sol[i][j];
n=n/2;
}
else
{
Refresh ();
for (int i=0;i<2;i++)
for (int j=0;j<2;j++)
for (int k=0;k<2;k++)
sol[i][j]=(sol[i][j] + 1LL * z[i][k] * y[k][j])%mod;
for (int i=0;i<2;i++)
for (int j=0;j<2;j++)
y[i][j]=sol[i][j];
Refresh ();
for (int i=0;i<2;i++)
for (int j=0;j<2;j++)
for (int k=0;k<2;k++)
sol[i][j]=(sol[i][j] + 1LL * z[i][k] * z[k][j])%mod;
for (int i=0;i<2;i++)
for (int j=0;j<2;j++)
z[i][j]=sol[i][j];
n=(n-1)/2;
}
}
Refresh ();
for (int i=0;i<2;i++)
for (int j=0;j<2;j++)
for (int k=0;k<2;k++)
sol[i][j]=(sol[i][j] + 1LL * z[i][k] * y[k][j])%mod;
fout << sol[1][1] << "\n";
return 0;
}