2419 - Întâlnire: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: ==Cerință== Doi prieteni se afla pe axa '''Ox''', in puncte cu coordonate întregi. Primul se află în punctul '''x1 = a''', iar al doilea se află în punctul '''x2 = b'''. Fiecare se poate mișca cu o poziție, la stânga sau la dreapta, de un număr nelimitat de ori. Când se mișcă, oboseala se modifică după următoarea regulă: la '''prima''' mișcare oboseala crește cu '''1''', la '''a doua''' mișcare oboseala crește cu '''2''', la '''a treia''' cu '''3''' și...
 
Line 18: Line 18:
;Intrare
;Intrare


:3 4
:3  
:4


;Ieșire
;Ieșire
 
:Datele de intrare corespund restricțiilor impuse.
:1
:1



Revision as of 15:00, 22 April 2023

Cerință

Doi prieteni se afla pe axa Ox, in puncte cu coordonate întregi. Primul se află în punctul x1 = a, iar al doilea se află în punctul x2 = b. Fiecare se poate mișca cu o poziție, la stânga sau la dreapta, de un număr nelimitat de ori. Când se mișcă, oboseala se modifică după următoarea regulă: la prima mișcare oboseala crește cu 1, la a doua mișcare oboseala crește cu 2, la a treia cu 3 și asa mai departe. De exemplu, dacă un prieten se mișcă mai întâi la stânga, apoi la dreapta, și apoi iar la stânga, oboseala lui devine 1 + 2 + 3 = 6.

Prietenii vor să se întâlnească într-un punct cu coordonata număr întreg. Aflați oboseala totală minimă pe care cei doi cei doi o vor acumula.

Date de intrare

Programul citește de la tastatură numerele a si b.

Date de ieșire

Programul va afișa pe ecran numărul S, reprezentând oboseala minimă posibilă acumulată de cei doi prieteni.

Restricții și precizări

  • 1 ≤ a ≤ 1000
  • 1 ≤ b ≤ 1000
  • a≠b

Exemplul 1

Intrare
3
4
Ieșire
Datele de intrare corespund restricțiilor impuse.
1

Rezolvare

Rezolvare ver. 1

<syntaxhighlight lang="python" line="1" start="1"> def validare(a, b):

   # Verifică dacă a și b sunt în intervalul [0,1000] și diferite între ele.
   if 0 <= a <= 1000 and 0 <= b <= 1000 and a != b:
       return True
   return False


def oboseala_minima(a, b):

   if a > b:
       a, b = b, a
   ok = True  # Inițializăm ok cu True, pentru a intra în bucla while.
   s = 0  # Inițializăm variabila s cu 0.
   i = 1  # Inițializăm i cu 1.
   while ok:
       if a != b:
           a += 1  # Incrementăm a.
           s += i  # Adăugăm la s valoarea lui i.
           if a == b:
               ok = False  # În cazul în care a ajunge egal cu b, ieșim din bucla while.
           else:
               b -= 1  # Decrementăm b.
               s += i  # Adăugăm la s valoarea lui i.
       else:
           ok = False  # În cazul în care a ajunge egal cu b, ieșim din bucla while.
       i += 1  # Incrementăm i.
   print(s)  # Afișăm valoarea finală a variabilei s.


if __name__ == "__main__":

   a = int(input())  # Citim prima valoare.
   b = int(input())  # Citim a doua valoare.
   if validare(a, b):  # Verificăm dacă valorile citite sunt valide, folosind funcția validare.
       print("Datele de intrare corespund restricțiilor impuse.")
       oboseala_minima(a, b)  # Dacă valorile sunt valide, apelăm funcția oboseala_minima.
   else:
       print("Datele de intrare nu corespund restricțiilor impuse.")

</syntaxhighlight>