4237 - Araci: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: <nowiki>== Cerință ==</nowiki> Să se determine lungimea maximă <code>L</code> pe care o poate obține pentru cel puțin <code>A</code> araci tăind bambușii. <nowiki>== Date de intrare ==</nowiki> Programul citește de la tastatură numerele <code>n</code> și <code>A</code>, iar apoi <code>n</code> numere naturale, separate prin spații, reprezentând dimensiunile tulpinilor de bambus. <nowiki>== Date de ieșire ==</nowiki> Programul va afișa pe ecran <code>L</cod...
 
 
(7 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<nowiki>== Cerință ==</nowiki>
== 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."


Să se determine lungimea maximă <code>L</code> pe care o poate obține pentru cel puțin <code>A</code> araci tăind bambușii.
== Restricții de precizări ==
*3 &les; '''n''' &les; 100000
*1 &les; '''L''' &les; 30000
== Exemplul 1==
; Intrare
: 4
:1
: 6 10 14 9
; Ieșire
: Datele introduse corespund restricțiilor impuse.
: 14


<nowiki>== Date de intrare ==</nowiki>
== Exemplul 2 ==
; Intrare
: 3
: 2
: 5 7 8
; Ieșire
: Datele introduse corespund restricțiilor impuse.
: 7<br>


Programul citește de la tastatură numerele <code>n</code> și <code>A</code>, iar apoi <code>n</code> numere naturale, separate prin spații, reprezentând dimensiunile tulpinilor de bambus.
== 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


<nowiki>== Date de ieșire ==</nowiki>


Programul va afișa pe ecran <code>L</code>, reprezentând lungimea maximă posibilă a celor cel puțin <code>A</code> araci.
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ă


<nowiki>== Restricții de precizări ==</nowiki>


<nowiki>*</nowiki>3 <nowiki>&</nowiki>les; n <nowiki>&</nowiki>les; 100000
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.")


<nowiki>*</nowiki>1 <nowiki>&</nowiki>les; d <nowiki>&</nowiki>les; 30000
</syntaxhighlight>
 
<nowiki>== Exemplul 1==</nowiki>
 
<nowiki>;</nowiki> Intrare
 
<nowiki>:</nowiki> 4 1
 
<nowiki>:</nowiki> 6 10 14 9
 
<nowiki>;</nowiki> Ieșire
 
<nowiki>:</nowiki> Datele introduse corespund restricțiilor impuse.
 
<nowiki>:</nowiki> 14
 
<nowiki><br></nowiki>
 
<nowiki>== Exemplul 2 ==</nowiki>
 
<nowiki>;</nowiki> Intrare
 
<nowiki>:</nowiki> 3
 
<nowiki>:</nowiki> 2
 
<nowiki>:</nowiki> 5 7 8
 
<nowiki>;</nowiki> Ieșire
 
<nowiki>:</nowiki> Datele introduse corespund restricțiilor impuse.
 
<nowiki>:</nowiki> 15
 
<nowiki><br></nowiki>
 
<nowiki>== Rezolvare ver. 1 ==</nowiki>

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>