1728 - K Sum Dif

From Bitnami MediaWiki

Cerința[edit | edit source]

Se dă un vector cu n elemente și un număr k.

Se construiește un nou vector, cu n-1 elemente, ale cărui elemente vor fi diferenţa dintre suma și modulul diferenţei a două elemente alăturate din primul vector.

Apoi se construiește un alt vector, după aceeași regulă, ș. a. m. d.

Afișați suma elementelor celui de-al k-1-lea vector construit prin această metodă.

Date de intrare[edit | edit source]

Programul citește de la tastatură numerele n, k și n numere naturale.

Date de ieșire[edit | edit source]

Programul va afișa pe ecran suma cerută.

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

  • 1 ≤ n ≤ 10000
  • cele n elemente ale vectorului vor fi mai mici decât 1000
  • k≤50

Exemplul 1[edit | edit source]

Input:

6 3

5 2 4 9 3 1

Output:

32

Explicație:

Prelucrarea primului element al noului vector se face astfel: (5+2)-(5-2)=4 ,

Elementele primului vector construit vor fi: 4 4 8 6 2 .

Elementele celui de-al 2-lea vector construit vor fi: 8 8 12 4 , iar suma lor va fi 32 .

Exemplul 2[edit | edit source]

Input:

99999999 1

5 2 4 9 3 1

Output:

Conditions not met.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python3" line="1"> def verify_conditions(n, k, v):

   if 1 <= n <= 10000 and k <= 50 and all(0 <= x < 1000 for x in v):
       return True
   return False

n, k = map(int, input().split()) v = list(map(int, input().split()))

if verify_conditions(n, k, v):

   while k > 1:
       for i in range(n - 1):
           v[i] += (v[i + 1] - abs(v[i] - v[i + 1]))
       n -= 1
       k -= 1
   s = sum(v[:n])
   print(s)

else:

   print("Conditions not met.")

</syntaxhighlight>