4237 - Araci: Difference between revisions

From Bitnami MediaWiki
 
Line 31: Line 31:
     n = str(n)  # Convertim n la șir de caractere
     n = str(n)  # Convertim n la șir de caractere
     return n.isdigit() and 3 <= int(n) <= 100000
     return n.isdigit() and 3 <= int(n) <= 100000


def calculate_max_length(n, A, bamboos):
def calculate_max_length(n, A, bamboos):
Line 44: Line 45:




def main():
if __name__ == "__main__":
     n = int(input("Introduceti numarul de dimensiuni de bambus: "))
     n = int(input("Introduceti numarul de dimensiuni de bambus: "))
     A = int(input("Introduceti numarul minim de araci: "))
     A = int(input("Introduceti numarul minim de araci: "))
     bamboos = list(map(int, input("Introduceti dimensiunile separate prin spatii: ").split()))
     bamboos = list(map(int, input("Introduceti dimensiunile separate prin spatii: ").split()))
     max_length = calculate_max_length(n, A, bamboos)
     max_length = calculate_max_length(n, A, bamboos)
    print("Lungimea maxima posibila:", max_length)
     if validare(n, A, bamboos):
     if validare(n, A, bamboos):
         print("Datele introduse corespund restricțiilor impuse.")
         print("Datele introduse corespund restricțiilor impuse.")
        print("Lungimea maxima posibila:", max_length)
     else:
     else:
         print("Datele introduse nu corespund restricțiilor impuse.")
         print("Datele introduse nu corespund restricțiilor impuse.")
       
if __name__ == "__main__":
    main()


</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 19:41, 25 April 2023

Cerință[edit]

Să se determine lungimea maximă L pe care o poate obține pentru cel puțin A araci tăind bambușii.

Date de intrare[edit]

Programul citește de la tastatură numerele n și A, iar apoi n numere naturale, separate prin spații, reprezentând dimensiunile tulpinilor de bambus.

Date de ieșire[edit]

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." Programul va afișa pe ecran L, reprezentând lungimea maximă posibilă a celor cel puțin A araci. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."

Restricții de precizări[edit]

  • 3 ⩽ n ⩽ 100000
  • 1 ⩽ L ⩽ 30000

Exemplul 1[edit]

Intrare
4
1
6 10 14 9
Ieșire
Datele introduse corespund restricțiilor impuse.
14

Exemplul 2[edit]

Intrare
3
2
5 7 8
Ieșire
Datele introduse corespund restricțiilor impuse.
15

Rezolvare ver. 1[edit]

<syntaxhighlight lang="python" line="1" start="1"> def validare(n, A, bamboos):

   n = str(n)  # Convertim n la șir de caractere
   return n.isdigit() and 3 <= int(n) <= 100000


def calculate_max_length(n, A, bamboos):

   bamboos.sort()  # Se sortează lista de dimensiuni de bambus în ordine crescătoare
   max_length = 0  # Variabila pentru lungimea maximă
   count = 0  # Variabila pentru numărul de araci
   i = n - 1  # Indexul pentru parcurgerea listei de la sfârșit
   while i >= 0 and count < A:  # Se parcurge lista în ordine descrescătoare până când se obține numărul minim de araci
       max_length += bamboos[i]  # Se adaugă dimensiunea curentă de bambus la lungimea maximă
       count += 1  # Se incrementează numărul de araci
       i -= 1  # Se trece la următorul bambus
   return max_length  # Se returnează lungimea maximă


if __name__ == "__main__":

   n = int(input("Introduceti numarul de dimensiuni de bambus: "))
   A = int(input("Introduceti numarul minim de araci: "))
   bamboos = list(map(int, input("Introduceti dimensiunile separate prin spatii: ").split()))
   max_length = calculate_max_length(n, A, bamboos)
   if validare(n, A, bamboos):
       print("Datele introduse corespund restricțiilor impuse.")
       print("Lungimea maxima posibila:", max_length)
   else:
       print("Datele introduse nu corespund restricțiilor impuse.")

</syntaxhighlight>