1956 - Siruri 2

From Bitnami MediaWiki

Sursa: [1]

Cerinţa

Fibonacci, un celebru matematician italian din Evul Mediu, a descoperit un șir de numere naturale cu multiple aplicații, șir ce-i poartă numele:

Fibonacci(n)={1Fibonacci(n−1)+Fibonacci(n−2)dacă n=1 sau n=2 dacă n>2 Fascinat de șirul lui Fibonacci, și mai ales aplicațiile acestui șir în natură, Iccanobif, un matematician în devenire, a creat un șir si el un care-i poartă numele:

Iccanobif(n)={1răsturnat(Iccanobif(n−1))+răsturnat(Iccanobif(n−2))dacă n=1 sau n=2 dacă n>2 Obținându-se astfel șirurile:

Fibonacci: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, … Iccanobif: 1, 1, 2, 3, 5, 8, 13, 39, 124, 514, 836, … Iccanobif, se întreabă acum, ce număr are mai mulți divizori numere naturale: al n-lea termen din șirul Fibonacci sau al n-lea termen din șirul său.


Scrieți un program care să citească un număr natural n și să afișeze:

a) al n-lea termen din șirul lui Fibonacci și numărul său de divizori b) al n-lea termen din șirul lui Iccanobif și numărul său de divizori

Date de intrare

Programul conține pe prima linie un număr natural p. Pentru toate testele de intrare, numărul p poate avea doar valoarea 1 sau valoarea 2. Pe linia a doua a fișierului se găsește un număr natural n.

Date de ieșire

Programul va afișa pe ecran, mesajul "Datele introduse corespund cerințelor" și pe o linie nouă numărul P , reprezentând produsul primelor n pătrate perfecte nenule, în caz contrar programul va afișa pe o linie noua mesajul "Datele introduse nu corespund cerintelor."

Dacă datele sunt introduse corect, programul va rula.

În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse.".

Restricţii şi precizări

  • 0 < n ⩽ 10

Exemplul 1

Intrare
4
Ieșire
Datele corespund cerințelor.
576



Rezolvare

<syntaxhighlight lang="python" line>

  1. 4273

def patrate_perfecte(n):

   patrate = []
   i = 1
   while len(patrate) < n:
       patrat = i * i
       patrate.append(patrat)
       i += 1
   return patrate


def calculeaza(numbers):

   product = 1
   for number in numbers:
       product *= number
   return product


def validare_numar(n):

   if n < 1 or n > 10:
       return False
   return True


if __name__ == '__main__':

   n = int(input("Introduceți numărul n: "))
   if not validare_numar(n):
       print("Datele introduse nu corespund cerintelor.")
   else:
       squares = patrate_perfecte(n)
       product = calculeaza(squares)
       print("Datele introduse corespund cerintelor.")
       print(product)


</syntaxhighlight>