2421 - CalculSume

From Bitnami MediaWiki
Revision as of 18:25, 11 January 2024 by Mraa (talk | contribs) (→‎Rezolvare)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerința[edit | edit source]

Cu n numere naturale, a1,a2,…,an , se pot calcula următoarele sume: S1=a1+a2+…+an

S2=a1⋅a2+a1⋅a3+…+an−1⋅an

S3=a1⋅a2⋅a3+a1⋅a2⋅a4+…+an−2⋅an−1⋅an

... Sn=a1⋅a2⋅…⋅an .

Se dau două numere n

și k
și apoi n numere naturale a1,a2,…,an

. Se cere să se calculeze suma Sk .

Date de intrare[edit | edit source]

Fișierul de intrare calculsume.in conține pe prima linie două numere n și k separate printr-un spațiu, urmate, pe a doua linie de n numere naturale separate de asemenea, prin spații.

Date de ieșire[edit | edit source]

Fișierul de ieșire calculsume.out va conține rezultatul cerut.

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

1 ≤ k ≤ n ≤ 100 numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât 101 pentru că sumele cerute pot avea valori foarte mari, se cere să se afișeze restul împărțirii acestora la 9973 Exemplul 1: calculsume.in

3 1 1 2 3 calculsume.out

6 Exemplul 2: calculsume.in

3 2 1 2 3 calculsume.out

11 Exemplul 3: calculsume.in

3 3 1 2 3 calculsume.out

6

Explicație[edit | edit source]

Cele 3 exemple citesc câte un set de date de intrare, pentru fiecare se va afișa rezultatul cerut.

S 1 = 1 + 2 + 3, deci suma S1 este 6

S 2 =1*2+1*3+2*3, deci suma S2 este 11

S 3 =1*2*3, deci suma S3 este 6.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python3" line="1"> MOD = 9973

def calculeaza_suma_k(n, k, numere):

  sume = [0] * (k + 1)
  for i in range(1, n + 1):
      for j in range(k, 0, -1):
          sume[j] = (sume[j] + numere[i - 1] * sume[j - 1]) % MOD
  
  return sume[k]

if __name__ == "__main__":

  with open("calculsume.in", "r") as f:
      n, k = map(int, f.readline().split())
      numere = list(map(int, f.readline().split()))
  rezultat = calculeaza_suma_k(n, k, numere)
  with open("calculsume.out", "w") as g:
      g.write(str(rezultat) + "\n")

</syntaxhighlight>