Pagini recente » Cod sursa (job #409095) | Solutii Autumn Warmup, Runda 3 | Cod sursa (job #2073592) | Cod sursa (job #2049964) | Cod sursa (job #1858081)
#include <bits/stdc++.h>
#define mod 666013
using namespace std;
ifstream f("kfib.in");
ofstream g("kfib.out");
int n,i;
int mat[5][5],sol[5][5];
inline void inmult(int b[5][5],int c[5][5])
{
int i,j,k;
int d[5][5];
for(i=1;i<=2;i++)
for(j=1;j<=2;j++)
{
d[i][j]=0;
for(k=1;k<=2;k++)
d[i][j]=(0+d[i][j]+1LL*b[i][k]*c[k][j])%mod;
}
for(i=1;i<=2;i++)
for(j=1;j<=2;j++)
b[i][j]=d[i][j];
}
int main()
{
f>>n;
mat[1][1]=0;
mat[1][2]=1;
mat[2][1]=1;
mat[2][2]=1;
sol[1][1]=0;
sol[1][2]=1;
n--;
while(n>0)
{
if(n%2!=0)
{
inmult(sol,mat);
}
inmult(mat,mat);
n=n/2;
}
g<<sol[1][2]<<' ';
}