2612 - Fibo Suma Cifre

De la Universitas MediaWiki
Versiunea din 28 martie 2023 16:20, autor: Sovago Rares-Andrei (discuție | contribuții) (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...)
(dif) ← Versiunea anterioară | Versiunea curentă (dif) | Versiunea următoare → (dif)

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()