4317 - Cifre 19: Difference between revisions
No edit summary |
No edit summary |
||
Line 2: | Line 2: | ||
== Cerinţa == | == Cerinţa == | ||
Să se scrie un program care citește un număr natural ''' | Să se scrie un program care citește un număr natural '''n''' cu cifrele distincte și schimbă între ele cea mai mare și cea mai mică cifră a lui '''n'''. | ||
== Date de intrare == | == Date de intrare == | ||
Programul va citi de la tastatură numărul ''' | Programul va citi de la tastatură numărul '''n'''. | ||
== Date de ieşire == | == Date de ieşire == | ||
Dacă datele introduse sunt corecte, se va afișa pe ecran mesajul: '''"Datele sunt introduse corect."''', apoi programul va afişa valoarea lui '''n''', după transformarea cerută. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: '''"Datele nu corespund restricțiilor impuse."''''. | |||
== Restricții și precizări == | == Restricții și precizări == | ||
* 10 ⩽ ''' | * 10 ⩽ '''n''' ⩽ 1.000.000.000 | ||
* cifrele lui ''' | * cifrele lui '''n''' sunt distincte | ||
== Exemplu == | == Exemplu == | ||
; Intrare | ; Intrare | ||
: 31526 | : 31526 | ||
; Ieșire | ; Ieșire | ||
: Datele sunt introduse corect. | |||
: 36521 | : 36521 | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
#4317 | |||
# | # Definim o funcție care verifică dacă un număr are cifrele distincte | ||
def verificare_numar(numar): | |||
cifre = set(str(numar)) # transformăm numărul într-un set pentru a elimina cifrele duplicate | |||
if len(cifre) != len(str(numar)): # verificăm dacă numărul are cifre distincte | |||
return False | |||
return True | |||
print("Numărul după transformare este: ", | # Definim o funcție care realizează transformarea cerută | ||
def transformare_numar(numar): | |||
# găsim pozițiile cifrei maxime și a celei minime în numărul dat | |||
poz_cifra_max = str(numar).index(max(str(numar))) | |||
poz_cifra_min = str(numar).index(min(str(numar))) | |||
# transformăm numărul într-o listă pentru a putea schimba cifrele | |||
numar_lista = list(str(numar)) | |||
# schimbăm cifrele la pozițiile respective | |||
numar_lista[poz_cifra_max], numar_lista[poz_cifra_min] = numar_lista[poz_cifra_min], numar_lista[poz_cifra_max] | |||
# transformăm lista înapoi în număr | |||
numar_nou = int("".join(numar_lista)) | |||
return numar_nou | |||
# Funcția main este punctul de intrare în program | |||
if __name__ == '__main__': | |||
numar = int(input("Introduceți numărul cu cifre distincte: ")) | |||
if verificare_numar(numar): | |||
print("Datele sunt introduse corect.") | |||
numar_transformare = transformare_numar(numar) | |||
print("Numărul după transformare este:", numar_transformare) | |||
else: | |||
print("Datele nu corespund restricțiilor impuse.") | |||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 17:29, 27 April 2023
Sursă: [1]
Cerinţa[edit | edit source]
Să se scrie un program care citește un număr natural n cu cifrele distincte și schimbă între ele cea mai mare și cea mai mică cifră a lui n.
Date de intrare[edit | edit source]
Programul va citi de la tastatură numărul n.
Date de ieşire[edit | edit source]
Dacă datele introduse sunt corecte, se va afișa pe ecran mesajul: "Datele sunt introduse corect.", apoi programul va afişa valoarea lui n, după transformarea cerută. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse."'.
Restricții și precizări[edit | edit source]
- 10 ⩽ n ⩽ 1.000.000.000
- cifrele lui n sunt distincte
Exemplu[edit | edit source]
- Intrare
- 31526
- Ieșire
- Datele sunt introduse corect.
- 36521
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 4317
- Definim o funcție care verifică dacă un număr are cifrele distincte
def verificare_numar(numar):
cifre = set(str(numar)) # transformăm numărul într-un set pentru a elimina cifrele duplicate if len(cifre) != len(str(numar)): # verificăm dacă numărul are cifre distincte return False return True
- Definim o funcție care realizează transformarea cerută
def transformare_numar(numar):
# găsim pozițiile cifrei maxime și a celei minime în numărul dat poz_cifra_max = str(numar).index(max(str(numar))) poz_cifra_min = str(numar).index(min(str(numar))) # transformăm numărul într-o listă pentru a putea schimba cifrele numar_lista = list(str(numar)) # schimbăm cifrele la pozițiile respective numar_lista[poz_cifra_max], numar_lista[poz_cifra_min] = numar_lista[poz_cifra_min], numar_lista[poz_cifra_max] # transformăm lista înapoi în număr numar_nou = int("".join(numar_lista)) return numar_nou
- Funcția main este punctul de intrare în program
if __name__ == '__main__':
numar = int(input("Introduceți numărul cu cifre distincte: ")) if verificare_numar(numar): print("Datele sunt introduse corect.") numar_transformare = transformare_numar(numar) print("Numărul după transformare este:", numar_transformare) else: print("Datele nu corespund restricțiilor impuse.")
</syntaxhighlight>