3076 - Circular
De la Universitas MediaWiki
sursa: [1]
Cerinţa
Scrieți un program care citește un număr natural și care să calculeze suma a tuturor numerelor obținute prin permutări circulare la dreapta ale cifrelor lui n cu o poziție.
Date de intrare
Programul citește de la tastatură numărul.
Date de ieşire
Programul va afișa pe ecran suma, cu semnificația din enunț.
Restricții și precizări
- 1 ≤ n ≤ 2.000.000.000
Exemplu
- Intrare
- 123
- Ieșire
- Datele introduse sunt valide
- 666
Explicație
S-au citit n=123. Suma calculată este S=666 (=312+231+123).
Rezolvare
Rezolvare ver.1
def calculeaza_suma_permutari_circulare(numar):
suma = 0
# Validare date de intrare
if numar < 1 or numar > 2000000000:
print("Datele introduse nu sunt valide. Introduceti un numar natural pozitiv mai mic sau egal cu 2000000000.")
else:
for i in range(len(str(numar))):
# Extragem ultima cifră
ultima_cifra = numar % 10
# "Rotim" numarul prin adaugarea ultimei cifre la inceput si eliminarea acesteia de la final
numar = (numar // 10) + (ultima_cifra * (10 ** (len(str(numar)) - 1)))
# Adunăm numărul la suma totală
suma += numar
print("Datele introduse sunt valide.")
# Afisăm suma
print("Suma numerelor obținute prin permutări circulare la dreapta ale cifrelor lui", str(numar), "este", suma)
if __name__ == "__main__":
numar = int(input("Introduceti un numar natural: "))
calculeaza_suma_permutari_circulare(numar)
Rezolvare ver.2
numar_natural = int(input("Introduceti un numar natural: "))
suma = 0
# Validare date de intrare
if numar_natural < 1 or numar_natural > 2000000000:
print("Datele introduse nu sunt valide. Introduceti un numar natural pozitiv mai mic sau egal cu 2000000000.")
else:
for i in range(len(str(numar_natural))):
# Extragem ultima cifră
ultima_cifra = numar_natural % 10
# "Rotim" numarul prin adaugarea ultimei cifre la inceput si eliminarea acesteia de la final
numar_natural = (numar_natural // 10) + (ultima_cifra * (10 ** (len(str(numar_natural)) - 1)))
# Adunăm numărul la suma totală
suma += numar_natural
print("Datele introduse sunt valide.")
# Afisăm suma
print("Suma numerelor obținute prin permutări circulare la dreapta ale cifrelor lui", str(numar_natural), "este", suma, ".")