fibopower

Time limit: 0.16s Memory limit: 32MB Input: fibopower.in Output: fibopower.out

Se consideră șirul numerelor Fibonacci 11, 11, 22, 33, 55, 88, 1313, 2121, 3434, 5555, 8989, \dots

Șirul este definit astfel:

  • fib[1]=1fib[1] = 1, fib[2]=1fib[2] = 1
  • fib[i]=fib[i1]+fib[i2]fib[i] = fib[i - 1] + fib[i - 2], unde fib[i]fib[i] reprezintă al ii-lea număr Fibonacci.

Spunem că un număr natural xx este fibopower dacă acesta se poate descompune în produs de trei numere Fibonacci distincte.

Exemplu: numărul 4848 este un număr fibopower deoarece 48=23848 = 2 \cdot 3 \cdot 8.

Se consideră șirul A=(A1,A2,An)A = (A_1, A_2, \dots A_n) cu nn elemente numere naturale nenule, respectiv un număr natural kk cuprins între 11 și nn. O secvență a șirului AA este formată din valori situate pe poziții consecutive în AA: Ai,Ai+1,AjA_i, A_{i+1}, \dots A_j, unde 1ijn1 \leq i \leq j \leq n.

Pe șirul AA se fac qq interogări de tipul xx yy cu semnificația: să se determine numărul secvențelor Ai,Ai+1,AjA_i, A_{i+1}, \dots A_j cu xijyx \leq i \leq j \leq y care conțin exact kk numere fibopower.

Cerință

Fiind cunoscute nn, kk, qq și cele nn elemente ale șirului AA, să se determine răspunsul pentru cele qq interogări date.

Date de intrare

Fișierul de intrare fibopower.in conține pe prima linie numerele naturale nn, kk și qq, cu semnificația din enunț. Pe a doua linie se află nn numere naturale nenule ce reprezintă elementele șirului AA. Pe următoarele qq linii, sunt scrise cele qq interogări, câte o interogare pe o linie, sub forma a două numere naturale xx yy, cu semnificația din enunț. Valorile scrise pe aceeași linie sunt separate prin câte un spațiu.

Date de ieșire

Fișierul de ieșire fibopower.out conține qq linii, pe linia ii (1iq1 \leq i \leq q) fiind scris răspunsul la cea de a ii-a interogare din fișierul de intrare.

Restricții și precizări

  • 1n1051 \leq n \leq 10^5
  • 1q1051 \leq q \leq 10^5
  • 1kn1 \leq k \leq n
  • 1Ai1091 \leq A_i \leq 10^9, pentru 1in1 \leq i \leq n
  • Pentru orice întrebare 1xyn1 \leq x \leq y \leq n
# Punctaj Restricții
1 26 1n1 0001 \leq n \leq 1 \ 000, q=1q = 1, x=1x = 1, y=ny = n
2 27 1 000<n1051 \ 000 < n \leq 10^5, q=1q = 1, x=1x = 1, y=ny = n
3 8 1<n1001 < n \leq 100, 1<q1001 < q \leq 100
4 9 100<n,q3 500100 < n, q \leq 3 \ 500
5 8 n=105n = 10^5, k=1k = 1
6 22 Fără restricții suplimentare.

Exemplu

fibopower.in

6 2 2
5 6 21 48 6 9
1 6
2 5

fibopower.out

6
3

Explicație

n=6n = 6, k=2k = 2

În șir există 33 numere fibopower: A2A_2, A4A_4, A5A_5

Avem de rezolvat 22 interogări.

La prima interogare trebuie să determinăm câte secvențe aflate între pozițiile 1,61, 6 în șir conțin exact 22 numere fibopower. Sunt 66 astfel de secvențe:

  • 55 66 2121 4848
  • 66 2121 4848
  • 2121 4848 66
  • 2121 4848 66 99
  • 4848 66
  • 4848 66 99

La a doua interogare răspunsul este 33, cele 33 secvențe fiind:

  • 66 2121 4848
  • 2121 4848 66
  • 4848 66

Log in or sign up to be able to send submissions!