| Fişierul intrare/ieşire: | kfib.in, kfib.out | Sursă | Arhiva Educationala |
| Autor | Arhiva Educationala | Adăugată de | |
| Timp execuţie pe test | 0.025 sec | Limită de memorie | 20480 kbytes |
| Scorul tău | N/A | Dificultate | N/A |
Vezi solutiile trimise | Statistici
Al k-lea termen Fibonacci
Fie şirul lui Fibonacci dat prin recurenţa
.
Cerinţă
Să se calculeze al K-lea termen al şirului modulo 666013.
Date de intrare
Fişierul de intrare kfib.in conţine o singură linie cu numărul natural K.
Date de ieşire
În fişierul de ieşire kfib.out se va afişa al K-lea termen al şirului modulo 666013.
Restricţii
- 0 ≤ K ≤ 1 000 000 000.
Exemplu
| kfib.in | kfib.out |
|---|---|
| 5 | 5 |
| 2707124 | 660634 |
Indicaţii de rezolvare
O implementare directă a relaţiei de recurenţă în complexitate liniară ar trebui să obţină 20 de puncte şi se găseşte aici.
Pentru a obţine 100 de puncte trebuie găsită o metodă eficientă de a rezolva această recurenţă. Ne vom folosi de înmulţirea matricelor în felul următor: la pasul
vom avea deja calculate
şi
şi vom dori să îl aflăm pe
:
![\emph{}
\[ \left( \begin{array}{ccc}
0 & 1 \
1 & 1 \end{array} \right)\] = \emph{}
\[ \left( \begin{array}{ccc}
F_{n-1}_ & F_n_ \end{array} \right)\]
\emph{}
\[ \left( \begin{array}{ccc}
0 & 1 \
1 & 1 \end{array} \right)\] = \emph{}
\[ \left( \begin{array}{ccc}
F_{n-1}_ & F_n_ \end{array} \right)\]](https://www.infoarena.ro/static/images/latex/270f1f9cd180a630862a63ed8854a7cf_10.50012pt.gif)
Vom nota cu
matricea
iar cu
matricea constantă
.
Ştim că
şi mai ştim că
. Din proprietatea de asociativitate a înmulţirii matricelor rezultă că
. Inductiv, rezultă egalitatea
. Soluţia optimă se foloseşte de ridicarea la putere în timp logaritmic, având complexitatea
. Constanta ce se ascunde în spatele acestei complexităţi este egală cu numărul de operaţii efectuate la fiecare pas al ridicării la putere, adică cu dimensiunea matricii constante
la puterea a
-a, care este
.
Aplicaţii
- Iepuri
- Hprob
- Ecu
- Pkinv
- Recurenta2
- Nr2
- Nice Patterns Strike Back, SGU
- Tour Counting, Topcoder
Poti vedea testele pentru aceasta problema accesand 