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
<syntaxhighlight lang="python" line="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>