Pagini recente » Cod sursa (job #1574994) | Cod sursa (job #123630) | Cod sursa (job #1963684) | Cod sursa (job #1116540) | Cod sursa (job #2262574)
#include <iostream>
#include <fstream>
#define mod 666013
using namespace std;
ifstream f("kfib.in");
ofstream g("kfib.out");
int n;
class matrix
{
private:
int n,m;
public:
int **a;
matrix(int l,int c)
{
n=l;
m=c;
a= new (int*);
n;
for(int i=0; i<n; i++)
a[i]=new int[m];
}
~matrix()
{
for(int i=0; i<n; i++)
delete a[i];
delete a;
}
void citire()
{
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
f>>a[i][j];
}
void afisare()
{
for(int i=0; i<n; i++)
{
for(int j=0; j<m; j++)
cout<<a[i][j]<<" ";
cout<<"\n";
}
}
matrix& operator*=(int numar)
{
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
a[i][j]*=numar;
return *this;
}
matrix& operator*=(matrix &y)
{
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
{
int aux=0;
for(int k=0;k<n;k++)
aux+=a[i][k]*y.a[k][j];
a[i][j]=aux;
}
return *this;
}
matrix& operator%=(int numar)
{
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
a[i][j]%=numar;
return *this;
}
};
matrix unu(2,2), og(2,1);
unsigned long long int logp(matrix b,long long int exp)
{
if(exp==1)
return b%=mod;
if(exp%2==1)
return (b*logp(b,exp-1))%mod;
else
return logp((b*b)%mod,exp/2);
}
int main()
{
f>>n;
unu.a={{1,1},{1,0}};
og.a={{1},{1}};
unu.afisare();
og.afisare();
return 0;
}