4237 - Araci: Difference between revisions

From Bitnami MediaWiki
No edit summary
 
(5 intermediate revisions by 2 users not shown)
Line 4: Line 4:
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.
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 ==
== Date de ieșire ==
Programul va afișa pe ecran '''L''', reprezentând lungimea maximă posibilă a celor cel puțin A araci.
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 ==
== Restricții de precizări ==
*3 ⩽ '''n''' ⩽ 100000
*3 ⩽ '''n''' ⩽ 100000
Line 10: Line 11:
== Exemplul 1==
== Exemplul 1==
; Intrare
; Intrare
: 4 1
: 4  
:1
: 6 10 14 9
: 6 10 14 9
; Ieșire
; Ieșire
: Datele introduse corespund restricțiilor impuse.
: Datele introduse corespund restricțiilor impuse.
: 14
: 14
== Exemplul 2 ==
== Exemplul 2 ==
; Intrare
; Intrare
Line 22: Line 25:
; Ieșire
; Ieșire
: Datele introduse corespund restricțiilor impuse.
: Datele introduse corespund restricțiilor impuse.
: 15<br>
: 7<br>
 
== Rezolvare ver. 1 ==
== Rezolvare ver. 1 ==
<syntaxhighlight lang="python" line="1" start="1">
<syntaxhighlight lang="python" line="1" start="1">
Line 28: Line 32:
     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 41: Line 46:




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 07:09, 11 October 2024

Cerință[edit | edit source]

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 | edit source]

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 | edit source]

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 | edit source]

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

Exemplul 1[edit | edit source]

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

Exemplul 2[edit | edit source]

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

Rezolvare ver. 1[edit | edit source]

<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>