1728 - K Sum Dif
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ât1000
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>