0271 - S Sume: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: ==Cerința== Se dă un tablou unidimensional cu <code>n</code> elemente, numere naturale nenule cu cel mult <code>8</code> cifre fiecare. Determinaţi câte dintre elementele tabloului se pot scrie ca sumă a altor două elemente aflate pe poziţii distincte din tablou. ==Date de intrare== Fişierul de intrare <code>ssume.in</code> conţine pe prima linie numărul <code>n</code>; urmează cele <code>n</code> elemente ale tabloului, dispuse pe mai multe linii şi separate pri...
 
No edit summary
 
(4 intermediate revisions by the same user not shown)
Line 5: Line 5:
Fişierul de intrare <code>ssume.in</code> conţine pe prima linie numărul <code>n</code>; urmează cele <code>n</code> elemente ale tabloului, dispuse pe mai multe linii şi separate prin spaţii.
Fişierul de intrare <code>ssume.in</code> conţine pe prima linie numărul <code>n</code>; urmează cele <code>n</code> elemente ale tabloului, dispuse pe mai multe linii şi separate prin spaţii.
==Date de ieșire==
==Date de ieșire==
Fişierul de ieşire <code>ssume.out</code> va conţine pe prima linie numărul <code>C</code>, numărul de elemente ale tabloului care se pot scrie ca sumă a altor două elemente aflate pe poziţii distincte din tablou.
Pe ecran se va afișa mesajul: "Datele de intrare corespund restricțiilor impuse."
 
Pe următorul rând se va afișa numărul <code>C</code>, numărul de elemente ale tabloului care se pot scrie ca sumă a altor două elemente aflate pe poziţii distincte din tablou.
 
În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Datele de intrare nu corespund restricțiilor impuse."


==Restricții și precizări==
==Restricții și precizări==
Line 16: Line 20:
:1 10 25 6 2 15 3  
:1 10 25 6 2 15 3  
;Ieșire
;Ieșire
:Datele de intrare corespund restricțiilor impuse.
:2
:2


Line 26: Line 31:
:1 2 3 4 5
:1 2 3 4 5
;Ieșire
;Ieșire
:Date de intrare gresite!
:Datele de intrare nu corespund restricțiilor impuse.


==Rezolvare==
==Rezolvare==
Line 41: Line 46:




def main():
def ssume(n, tablou):
     n = int(input())
     nr_sume = 0
     tablou = [int(x) for x in input().split()]
     # Pentru fiecare număr din tablou, verificăm dacă există alte două numere distincte a căror sumă este egală cu el
 
    if not conditii(n, tablou):
        return print("Date de intrare gresite!")
 
    sume = 0
     for i in range(n):
     for i in range(n):
         for j in range(n):
         for j in range(n):
             for h in range(j + 1, n):
             for h in range(j + 1, n):
                # Ne asigurăm că verificăm indici diferiți (adică numere distincte)
                # Dacă există două numere diferite care se adună la numărul curent...
                 if i != j and i != h and tablou[j] + tablou[h] == tablou[i]:
                 if i != j and i != h and tablou[j] + tablou[h] == tablou[i]:
                     sume += 1
                     # ...incrementăm nr_sume
                    nr_sume += 1


     print(sume)
     print(nr_sume)




if __name__ == "__main__":
if __name__ == "__main__":
     main()
     n = int(input())
    tablou = [int(x) for x in input().split()]
 
    if not conditii(n, tablou):
        print("Datele de intrare nu corespund restricțiilor impuse.")
    else:
        print("Datele de intrare corespund restricțiilor impuse.")
        ssume(n, tablou)


</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 15:28, 5 May 2023

Cerința[edit | edit source]

Se dă un tablou unidimensional cu n elemente, numere naturale nenule cu cel mult 8 cifre fiecare. Determinaţi câte dintre elementele tabloului se pot scrie ca sumă a altor două elemente aflate pe poziţii distincte din tablou.

Date de intrare[edit | edit source]

Fişierul de intrare ssume.in conţine pe prima linie numărul n; urmează cele n elemente ale tabloului, dispuse pe mai multe linii şi separate prin spaţii.

Date de ieșire[edit | edit source]

Pe ecran se va afișa mesajul: "Datele de intrare corespund restricțiilor impuse."

Pe următorul rând se va afișa numărul C, numărul de elemente ale tabloului care se pot scrie ca sumă a altor două elemente aflate pe poziţii distincte din tablou.

În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Datele de intrare nu corespund restricțiilor impuse."

Restricții și precizări[edit | edit source]

  • 1 ≤ n ≤ 100

Exemplu 1[edit | edit source]

Intrare
7
1 10 25 6 2 15 3
Ieșire
Datele de intrare corespund restricțiilor impuse.
2

Explicație[edit | edit source]

25=10+15, 3=1+2.

Exemplu 2[edit | edit source]

Intrare
101
1 2 3 4 5
Ieșire
Datele de intrare nu corespund restricțiilor impuse.

Rezolvare[edit | edit source]

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

  1. 0271 S Sume

def conditii(n, tablou):

   restrictii = (
       1 <= n <= 10,
       len(tablou) == n
   )
   return all(restrictii)


def ssume(n, tablou):

   nr_sume = 0
   # Pentru fiecare număr din tablou, verificăm dacă există alte două numere distincte a căror sumă este egală cu el
   for i in range(n):
       for j in range(n):
           for h in range(j + 1, n):
               # Ne asigurăm că verificăm indici diferiți (adică numere distincte)
               # Dacă există două numere diferite care se adună la numărul curent...
               if i != j and i != h and tablou[j] + tablou[h] == tablou[i]:
                   # ...incrementăm nr_sume
                   nr_sume += 1
   print(nr_sume)


if __name__ == "__main__":

   n = int(input())
   tablou = [int(x) for x in input().split()]
   if not conditii(n, tablou):
       print("Datele de intrare nu corespund restricțiilor impuse.")
   else:
       print("Datele de intrare corespund restricțiilor impuse.")
       ssume(n, tablou)

</syntaxhighlight>