4237 - Araci: Difference between revisions

From Bitnami MediaWiki
No edit summary
(2 intermediate revisions by the same user 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 28: 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 41: 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>

Revision as of 19:41, 25 April 2023

Cerință

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

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

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

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

Exemplul 1

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

Exemplul 2

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

Rezolvare ver. 1

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