CSES - Parilliset

Annettuna on kokonaislukuja sisältävä lista. Tehtäväsi on laskea, monessako osalistassa kaikki luvut ovat parillisia.

Esimerkiksi listan [2,4,1,6] osalistat ovat seuraavat:

[2], [4], [1], [6], [2,4], [4,1], [1,6], [2,4,1], [4,1,6], [2,4,1,6]

Tässä tapauksessa haluttu vastaus on 4, koska kaikki luvut ovat parillisia osalistoissa [2], [4], [6] ja [2,4].

Toteuta tiedostoon even.py funktio count_sublists, jolle annetaan parametrina lista lukuja. Funktion tulee palauttaa haluttujen osalistojen määrä.

Sinun tulee toteuttaa tehokas ratkaisu, jonka aikavaativuus on O(n). Et voi käydä jokaista osalistaa erikseen läpi, vaan sinun tulee laskea vastaus tehokkaasti käymällä koko lista vain kerran läpi.

Tehtäväpohjan viimeisessä testissä lista sisältää 10^5 kertaa luvun 2 ja listan jokainen osalista muodostuu parillisista luvuista. Funktiosi tulee toimia tehokkaasti tässäkin tapauksessa.

def count_sublists(numbers):
    # TODO

if __name__ == "__main__":
    print(count_sublists([2, 4, 1, 6])) # 4
    print(count_sublists([1, 2, 3, 4])) # 2
    print(count_sublists([1, 1, 1, 1])) # 0
    print(count_sublists([2, 2, 2, 2])) # 10
    print(count_sublists([1, 1, 2, 1])) # 1

    numbers = [2] * 10**5
    print(count_sublists(numbers)) # 5000050000