3815 - Poligon

From Bitnami MediaWiki

Cerinţa

Se dau n numere naturale. Aflati daca acestea pot fi laturile unui poligon cu n laturi.

Date de intrare

Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.

Date de ieșire

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", Programul va afișa pe ecran mesajul DA, daca numerele date pot fi laturile unui poligon,altfel se afiseaza mesajul NU. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse.".

Restricţii şi precizări

  • 1 ≤ n ≤ 1000000
  • cele n numere citite vor fi mai mici decât 1.000.000.000


Exemple

Exemplul 1

Intrare
5
1 2 3 4 5
Ieșire
Datele sunt introduse corect.
DA

Exemplul 2

Intrare
4
2 3 7 9
Ieșire
Datele sunt introduse corect.
DA

Exemplul 3

Intrare
3
1000000001 500000000 250000000
Ieșire
Datele nu corespund restricțiilor impuse.



Rezolvare

<syntaxhighlight lang="python" line="1">

  1. 3815 - Poligon

def validate_input(n, laturi):

   if not (1 <= n <= 1000000):
       return False
   if not all(1 <= latura <= 1000000000 for latura in laturi):
       return False
   return True


def main():

   try:
       n = int(input())
       laturi = list(map(int, input().split()))
       if not validate_input(n, laturi):
           raise ValueError
   except ValueError:
       print("Datele nu corespund restricțiilor impuse.")
       return
   except:
       print("Datele nu corespund formatului cerut.")
       return
   print("Datele sunt introduse corect.")
   poate_fi_poligon(n, laturi)


def poate_fi_poligon(n, laturi):

   if not validate_input(n, laturi):
       print("Datele nu corespund restricțiilor impuse.")
       return
   suma = sum(laturi)
   max_latura = max(laturi)
   if (suma - max_latura) > max_latura:  # modified condition
       print("DA")
   else:
       print("NU")


if __name__ == "__main__":

   main()



</syntaxhighlight>