0578 - SecvEgale2: Diferență între versiuni

De la Universitas MediaWiki
(Pagină nouă: Sursa: [https://www.pbinfo.ro/probleme/524/secvegale1 0578 - SecvEgale2] ---- == Cerinţa == Se dă un vector cu n elemente, numere naturale. Determinați câte secvențe ale vectorului au toate elementele egale. == Date de intrare == Programul citește de la tastatură numărul n, apoi cele n elemente ale vectorului. == Date de ieșire == Programul va afișa pe ecran numărul C, reprezentând valoarea cerută. == Restricţii şi precizări == * 1 ≤ n ≤ 100.000 * elem...)
 
Fără descriere a modificării
Linia 25: Linia 25:
# 0578 - SecvEgale2
# 0578 - SecvEgale2


n = int(input())
def read_input():
v = list(map(int, input().split()))
    n = int(input())
    v = list(map(int, input().split()))
    return v


# numărăm secvențele de elemente egale
def count_equal_sequences(v):
count = 1
    cnt = 0
for i in range(1, n):
    last = None
    if v[i] != v[i-1]:
    seq_len = 0
         count += 1
   
    for i in range(len(v)):
        if v[i] != last:
            if seq_len >= 2:
                cnt += 1
            seq_len = 1
            last = v[i]
        else:
            seq_len += 1
           
    if seq_len >= 2:
         cnt += 1
       
    return cnt


print(count)
def validate_output(expected, actual):
    return expected == actual


     print("Secventa nu exista")
if __name__ == '__main__':
     v = read_input()
    result = count_equal_sequences(v)
    expected = int(input())
    if validate_output(expected, result):
        print("Corect")
    else:
        print("Incorect")




</syntaxhighlight>
</syntaxhighlight>

Versiunea de la data 17 aprilie 2023 19:56

Sursa: 0578 - SecvEgale2


Cerinţa

Se dă un vector cu n elemente, numere naturale. Determinați câte secvențe ale vectorului au toate elementele egale.

Date de intrare

Programul citește de la tastatură numărul n, apoi cele n elemente ale vectorului.

Date de ieșire

Programul va afișa pe ecran numărul C, reprezentând valoarea cerută.

Restricţii şi precizări

  • 1 ≤ n ≤ 100.000
  • elementele vectorului vor fi mai mici decât 1.000.000.000

Exemplu

Intrare
5
4 3 3 3 5
Ieșire
8

Rezolvare

Rezolvare ver. 1

# 0578 - SecvEgale2

def read_input():
    n = int(input())
    v = list(map(int, input().split()))
    return v

def count_equal_sequences(v):
    cnt = 0
    last = None
    seq_len = 0
    
    for i in range(len(v)):
        if v[i] != last:
            if seq_len >= 2:
                cnt += 1
            seq_len = 1
            last = v[i]
        else:
            seq_len += 1
            
    if seq_len >= 2:
        cnt += 1
        
    return cnt

def validate_output(expected, actual):
    return expected == actual

if __name__ == '__main__':
    v = read_input()
    result = count_equal_sequences(v)
    expected = int(input())
    if validate_output(expected, result):
        print("Corect")
    else:
        print("Incorect")