Cod sursa(job #2647913)

Utilizator MateGMGozner Mate MateGM Data 7 septembrie 2020 12:44:49
Problema Al k-lea termen Fibonacci Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream be("kfib.in");
ofstream ki("kfib.out");
long long MOD=666013;
void szorz(int (&a)[3][3],int (&b)[3][3],int (&c)[3][3])
{
    int sum=0;
    for(int i=1;i<=2;i++)
    {
       for(int j=1;j<=2;j++)
       {
           for(int k=1;k<=2;k++)
                sum+=(a[i][k]*b[k][j])%MOD;
           c[i][j]=sum;
           sum=0;
       }
    }
}
void masol(int (&a)[3][3],int (&b)[3][3])
{
    for(int i=1;i<=2;i++)
        for(int j=1;j<=2;j++)
        b[i][j]=a[i][j];
}
int d[2][2],l[2][2];
int main()
{
   int k;
   be>>k;
    int a[3][3],b[3][3],c[3][3];
   a[1][1]=0;
   a[1][2]=1;
   a[2][1]=1;
   a[2][2]=1;
   masol(a,b);
   for(int i=1;i<k;i++)
   {
       szorz(a,b,c);
       masol(c,b);
   }
   d[1][1]=0;
   d[1][2]=1;
    for(int i = 1; i <=1 ; ++i)
        for(int j = 1; j <=2; ++j)
            for(int k = 1; k <= 2; ++k)
            {
                l[i][j] += (d[i][k] * c[k][j])%MOD;
            }
ki<<l[1][1];
    return 0;
}