1255 - Lipsa

From Bitnami MediaWiki

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, programul va rula.

Î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

2 ≤ n ≤ 1.000.000

Exemplul 1

Intrare
5
5 3 1 2
Ieșire
4


Rezolvare

<syntaxhighlight lang="python" line>

  1. 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)

if __name__ == '__main__':

   n, nums = read_numbers()
   missing_num = calculate_missing_number(n, nums)
   display_missing_number(missing_num)


</syntaxhighlight> 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.