3076 - Circular: Difference between revisions
Am creat de la zero. |
mNo edit summary |
||
| Line 22: | Line 22: | ||
== Rezolvare == | == Rezolvare == | ||
=== Rezolvare ver.1 === | |||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
| Line 44: | Line 45: | ||
# Afisăm suma | # Afisăm suma | ||
print("Suma numerelor obținute prin permutări circulare la dreapta ale cifrelor lui", numar_natural, "este", suma) | print("Suma numerelor obținute prin permutări circulare la dreapta ale cifrelor lui", numar_natural, "este", suma) | ||
</syntaxhighlight> | |||
=== Rezolvare ver.2 === | |||
<syntaxhighlight lang="python" line> | |||
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 | |||
# Afisăm suma | |||
print("Suma numerelor obținute prin permutări circulare la dreapta ale cifrelor lui", str(numar_natural), "este", suma) | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Revision as of 17:10, 21 April 2023
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
<syntaxhighlight lang="python" line> numar_natural = input("Introduceti un numar natural: ") suma = 0
- Validare date de intrare
if not numar_natural.isdigit() or int(numar_natural) < 1 or int(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(numar_natural)):
# Transformăm numărul într-o listă de caractere
cifre = list(numar_natural)
# Extragem prima cifră și o adăugăm la sfârșitul listei
cifra = cifre.pop(0)
cifre.append(cifra)
# Transformăm lista înapoi într-un număr întreg
numar_permutat = int(.join(cifre))
# Adunăm numărul la suma totală
suma += numar_permutat
print("Datele introduse sunt valide.")
# Afisăm suma
print("Suma numerelor obținute prin permutări circulare la dreapta ale cifrelor lui", numar_natural, "este", suma)
</syntaxhighlight>
Rezolvare ver.2
<syntaxhighlight lang="python" line> 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
# Afisăm suma
print("Suma numerelor obținute prin permutări circulare la dreapta ale cifrelor lui", str(numar_natural), "este", suma)
</syntaxhighlight>