661 - Triunghiuri1
Cerinţa[edit | edit source]
Se dau n numere naturale distincte. Determinaţi câte triunghiuri distincte pot avea lungimile laturilor printre aceste numere.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n, iar apoi cele n numere naturale.
Date de ieșire[edit | edit source]
Programul va afișa pe ecran numărul C, reprezentând numărul de triunghiuri determinate.
Restricţii şi precizări[edit | edit source]
- 1 ⩽ n ⩽ 1000
- cele n numere citite vor fi mai mici decât 1.000.000
Exemplul 1[edit | edit source]
- Intrare
5 3 5 10 7 6
- Iesire
Datele de intrare corespund restrictiilor impuse 7
Exemplul 2[edit | edit source]
- Intrare
3 1 2 1000000000
- Iesire
Datele de intrare nu corespund restrictiilor impuse
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line> def numar_triunghiuri(n_val, numere_val):
numere_val.sort() count = 0 for i in range(n_val-2): k = i + 2 for j in range(i+1, n_val): while k < n_val and numere_val[i] + numere_val[j] > numere_val[k]: k += 1 if k > j: count += k - j - 1 return count
def verifica_restrictii(n_val, numere_val):
if n_val < 1 or n_val > 1000: return "Datele de intrare nu corespund restrictiilor impuse" for numar in numere_val: if numar >= 1000000: return "Datele de intrare nu corespund restrictiilor impuse" return "Datele de intrare corespund restrictiilor impuse"
n = int(input())
numere = list(map(int, input().split()))
print(verifica_restrictii(n, numere))
print(numar_triunghiuri(n, numere))
</syntaxhighlight>
Explicație[edit | edit source]
Cele 7 triunghiuri au lungimile laturilor:
3 5 7 3 5 6 3 7 6 5 7 6 5 10 7 5 10 6 10 7 6