Annettuna on kokonaislukuja sisältävä lista. Tehtäväsi on laskea yhteen kaikkien osalistojen summat.
Esimerkiksi listassa [1,2,3] osalistojen summat ovat:
- [1]: summa 1
- [2]: summa 2
- [3]: summa 3
- [1,2]: summa 3
- [2,3]: summa 5
- [1,2,3]: summa 6
Tässä tapauksessa haluttu vastaus on 1+2+3+3+5+6=20.
Toteuta tiedostoon sumsum.py funktio count_sum, jolle annetaan parametrina lista lukuja. Funktion tulee palauttaa osalistojen summien summa.
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ää luvut 1,2,\dots,10^5. Funktiosi tulee toimia tehokkaasti tässäkin tapauksessa.
def count_sum(numbers):
# TODO
if __name__ == "__main__":
print(count_sum([1, 2, 3])) # 20
print(count_sum([42])) # 42
print(count_sum([1, 1, 1, 1])) # 20
print(count_sum([2, 1, 7, 8, 5, 1, 3, 1])) # 484
numbers = list(range(1, 10**5))
print(count_sum(numbers)) # 8333333332500000000
