Pagini recente » Cod sursa (job #2672612) | Cod sursa (job #2533985) | Cod sursa (job #2541049) | Cod sursa (job #2335470) | Cod sursa (job #767296)
Cod sursa(job #767296)
#include <cstdio>
#include <algorithm>
using namespace std;
#define mod 666013
typedef long long ll;
ll a[2][2] = {{1,1},{1,0}};
ll r[2][2] = {{1,1},{1,0}};
void tipar(ll a[2][2]){
ll v[2] = {1,1}, w[2] = {0,0};
for(int i=0;i<2;i++)
for(int k=0;k<2;k++) w[i] = (w[i] + (v[k] * r[k][i])%mod)%mod;
/*
for(int i=0;i<2;i++) printf("%lld ",w[i]); printf("\n");
for(int i=0;i<2;i++){
for(int j=0;j<2;j++)printf("%lld ",a[i][j]); printf("\n"); }
*/
printf("%lld\n",w[0]);
}
void produs(ll r[2][2],ll a[2][2]){
ll x[2][2];
for(int i=0;i<2;i++)
for(int j=0;j<2;j++) x[i][j] = 0;
for(int i=0;i<2;i++)
for(int j=0;j<2;j++)
for(int k=0;k<2;k++) x[i][j] = (x[i][j] + (r[i][k] * a[k][j])%mod)%mod;
for(int i=0;i<2;i++)
for(int j=0;j<2;j++) r[i][j] = x[i][j];
}
void pow(int k){
if(k > 1)
{
pow(k/2);
if(k%2)
{
produs(r,r);
produs(r,a);
} else produs(r,r);
}
}
int main(){
int k;
freopen("test.in","r",stdin);
freopen("test.out","w",stdout);
scanf("%d",&k);
pow(k-2);
tipar(r);
return 0;
}