Pagini recente » Cod sursa (job #319258) | Cod sursa (job #1914294) | Cod sursa (job #2893483) | Cod sursa (job #1709105) | Cod sursa (job #2132578)
#include <iostream>
#include<fstream>
using namespace std;
const long long int mod = 666013;
ifstream f("kfib.in");
ofstream g("kfib.out");
void inmultire(int a[2][2], int b[2][2], int c[2][2])
{
int aux[2][2];
aux[0][0]=(a[0][0]*b[0][0]%mod + a[0][1]*b[1][0]%mod)%mod;
aux[0][1]=(a[0][0]*b[0][1]%mod + a[0][1]*b[1][1]%mod)%mod;
aux[1][0]=(a[1][0]*b[0][0]%mod + a[1][1]*b[1][0]%mod)%mod;
aux[1][1]=(a[1][0]*b[0][1]%mod + a[1][1]*b[1][1]%mod)%mod;
c[0][0]=aux[0][0];
c[0][1]=aux[0][1];
c[1][0]=aux[1][0];
c[1][1]=aux[1][1];
}
void putere(int n[2][2],int p,int r[2][2])
{
while(p != 0)
{
if(p % 2 == 1)
inmultire(r,n,r);
inmultire(n,n,n);
p/=2;
}
}
int main()
{
int c[2][2] = {{0,1},{1,1}},r[2][2] = {{1,0},{0,1}},n;
int s = 0;
f>>n;
putere(c,n-2,r);
s = r[1][0] + r[1][1];
g<<s;
return 0;
}