3176 - Fibonacci perechi

From Bitnami MediaWiki
Revision as of 20:20, 24 October 2023 by Bonte Lucas Gabriel (talk | contribs) (Pagină nouă: Se consideră şirul Fibonacci, definit astfel: f1=1, f2=1, fn=fn−1+fn−2, dacă n>2. ==Cerință== Se dau perechi de numere '''a''' și '''b''' cu '''a ≤ b'''. Să se calculeze pentru câte perechi fb este multiplu de fa. ==Date de intrare== Fișierul de intrare '''fibo0.in''' conține pe fiecare linie câte două numere '''a''' și '''b''' cu semnificația din enunț . ==Date de ieșire== Fișierul de ieșire '''fibo0.out''' va conține pe prima linie numărul ''...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Se consideră şirul Fibonacci, definit astfel: f1=1, f2=1, fn=fn−1+fn−2, dacă n>2.

Cerință

Se dau perechi de numere a și b cu a ≤ b. Să se calculeze pentru câte perechi fb este multiplu de fa.

Date de intrare

Fișierul de intrare fibo0.in conține pe fiecare linie câte două numere a și b cu semnificația din enunț .

Date de ieșire

Fișierul de ieșire fibo0.out va conține pe prima linie numărul N, reprezentând numărul de perechi ce respectă condiția impusă .

Restricții de precizări

  • Se vor citi până la 1.000.000 de perechi
  • Numerele citite vor fi numere naturale strict mai mari decât 2 și mai mici decât 2.000.000.002

Exemplu

fibo0.in

4 9
4 8
10 12
7 21

fibo0.out

2

Rezolvare

<syntaxhighlight lang="python" line="1" start="1">

def fibonacci(n):

   fib = [0, 1]
   for i in range(2, n+1):
       fib.append(fib[i-1] + fib[i-2])
   return fib

def count_multiples(pairs):

   max_n = max(max(pair) for pair in pairs)
   fib = fibonacci(max_n)
   count = 0
   for a, b in pairs:
       if fib[b] % fib[a] == 0:
           count += 1
   return count

pairs = [(4, 9), (4, 8), (10, 12), (7, 21)] print(count_multiples(pairs)) with open('fibo0.out', 'w') as f:

   f.write(str(count_multiples(pairs)))

</syntaxhighlight>

Explicație

f4=3 , iar f9=34

care NU este multiplu de 3

f4=3 , iar f8=21

care este multiplu de 3

f10=55 , iar f12=144

care NU este multiplu de 55

f7=13 , iar f21=10946

care este multiplu de 13