2612 - Fibo Suma Cifre

From Bitnami MediaWiki
Revision as of 16:20, 28 March 2023 by Sovago Rares-Andrei (talk | contribs) (Pagină nouă: == Cerinţa == Numim suma cifrelor până la o cifră a unui număr '''X''', o valoare mai mică decât 10 obținută prin adunarea cifrelor numărului '''X''' și repetarea procedurii dacă suma obținută este mai mare decât 10, de această dată având drept X suma obținută la pasul precedent. Se dă un număr n reprezentând poziția unui număr '''Fn''' din șirul lui Fibonacci. Să se calculeze suma cifrelor până la o cifră a lui '''Fn'''. == Date de intrare == P...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerinţa

Numim suma cifrelor până la o cifră a unui număr X, o valoare mai mică decât 10 obținută prin adunarea cifrelor numărului X și repetarea procedurii dacă suma obținută este mai mare decât 10, de această dată având drept X suma obținută la pasul precedent.

Se dă un număr n reprezentând poziția unui număr Fn din șirul lui Fibonacci. Să se calculeze suma cifrelor până la o cifră a lui Fn.

Date de intrare

Programul citește de la tastatură numărul n.

Date de ieșire

Dacă datele sunt introduse corect, pe ecran: "Datele sunt introduse corect.",programul va afișa pe ecran valoarea S, reprezentând suma cifrelor până la o cifră a numărului Fn. În cazul în care datele nu respectă restricțiile, se va afișa: "Datele nu corespund restricțiilor impuse.".

Restricţii şi precizări

  • 1 ≤ n ≤ 1019

Exemple

Exemplul 1

ecran

Introduceți valoarea lui n: 15

ecran
Datele sunt introduse corect.
Suma cifrelor lui Fn este: 7

Exemplul 2

ecran

Introduceți valoarea lui n: 11

ecran
Datele sunt introduse corect.
Suma cifrelor lui Fn este: 8

Exemplul 3

ecran

Introduceți valoarea lui n: 0

ecran
Valoarea introdusă nu respectă restricțiile impuse.



Rezolvare

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

  1. 2612 - Fibo Suma Cifre

import sys


def valideaza_input(valoare):

   if not isinstance(valoare, int) or valoare < 1 or valoare > pow(10,18):
       print("Valoarea introdusă nu respectă restricțiile impuse.")
       sys.exit(0)
   else:
       print("Datele sunt introduse corect.")


def calculeaza_suma_cifrelor(numar):

   if numar == 1 or numar == 2:
       return 1
   else:
       if numar > 24:
           numar %= 24
       a, b = 1, 1
       for i in range(3, numar+1):
           c = a + b
           a = b
           b = c
       return sum(int(d) for d in str(c))


def main():

   valoare = int(input("Introduceți valoarea lui n: "))
   valideaza_input(valoare)
   Fn = calculeaza_suma_cifrelor(valoare)
   suma_cifrelor_Fn = sum(int(cifra) for cifra in str(Fn))
   print(f"Suma cifrelor lui Fn este: {suma_cifrelor_Fn}")


main()







</syntaxhighlight>