2612 - Fibo Suma Cifre
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
# 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()