1255 - Lipsa: Diferență între versiuni
Linia 18: | Linia 18: | ||
== Exemplul 1 == | == Exemplul 1 == | ||
; Datele de intrare: | ; Datele de intrare: | ||
: Introdu un nr. N urmat de N numere: | |||
: 5 | : 5 | ||
:5 3 1 2 | : 5 3 1 2 | ||
: Datele sunt introduse corect. | : Datele sunt introduse corect. | ||
; Datele de ieșire: | ; Datele de ieșire: |
Versiunea de la data 26 aprilie 2023 20:08
Sursa: [1]
Cerinţa
Se dau n - 1 numere naturale distincte de la 1 la n. Să se gaseasca numărul lipsă.
Date de intrare
Programul conține pe prima linie numărul n, iar pe a doua linie n - 1 numere naturale separate prin spații.
Date de ieșire
Programul va conține pe prima linie numărul căutat.
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi pe un rând nou afișează numărul lipsă .
În caz contrar, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse."
Restricţii şi precizări
2 ≤ n ≤ 1.000.000
Exemplul 1
- Datele de intrare
- Introdu un nr. N urmat de N numere:
- 5
- 5 3 1 2
- Datele sunt introduse corect.
- Datele de ieșire
- 4
Rezolvare
#1255
def read_numbers():
n = int(input("Introdu un nr. N urmat de N numere:"))
nums = list(map(int, input().split()))
return n, nums
def calculate_missing_number(n, nums):
sum_given = sum(nums)
sum_n = (n * (n+1)) // 2
missing_num = sum_n - sum_given
return missing_num
def display_missing_number(missing_num):
print(missing_num)
def validate_input(n, nums):
if not isinstance(n, int):
print("Datele nu corespund restricțiilor impuse.")
return False
elif len(nums) != n:
print("Datele nu corespund restricțiilor impuse.")
return False
elif any(num < 1 or num > n for num in nums):
print("Datele nu corespund restricțiilor impuse.")
return False
else:
return True
if __name__ == '__main__':
n, nums = read_numbers()
if validate_input(n, nums):
missing_num = calculate_missing_number(n, nums)
display_missing_number(missing_num)
print("Datele sunt introduse corect")
Explicatie cod:
Acest cod implementează o funcție care primește un număr N urmat de N numere și calculează numărul lipsă dintr-o secvență de numere consecutive.
Funcția read_numbers primește input-ul de la utilizator, citind întâi numărul N și apoi lista de N numere sub formă de șir de caractere. Lista de numere este transformată într-o listă de întregi folosind funcția map și int, apoi sunt returnate atât numărul N cât și lista de numere.
Funcția calculate_missing_number primește numărul N și lista de numere ca parametri și calculează suma numerelor date și suma primelor n numere naturale. Diferența dintre cele două este numărul lipsă, care este returnat.
Funcția display_missing_number primește numărul lipsă și îl afișează.
În final, se apelează cele trei funcții în ordine pentru a citi input-ul de la utilizator, a calcula numărul lipsă și a-l afișa.