CSES - Listan pienin

Listalla on aluksi kokonaisluku 11. Joka askeleella listalta poistetaan pienin luku (merkitään tätä lukua xx:llä) sekä listan loppuun lisätään luvut 2x2x ja 3x3x, jos ne eivät esiinny listalla.

Tehtäväsi on selvittää listan pienin luku, kun kaikki askeleet on suoritettu. Esimerkiksi kun askelten määrä on 55, lista muuttuu näin:

[1][2,3][3,4,6][4,6,9][6,9,8,12][9,8,12,18][1] \rightarrow [2,3] \rightarrow [3,4,6] \rightarrow [4,6,9] \rightarrow [6,9,8,12] \rightarrow [9,8,12,18]

Tässä tapauksessa listan pienin luku lopussa on 88.

Toteuta tiedostoon twothree.py funktio find_smallest, jolle annetaan askelten määrä. Funktion tulee palauttaa listan pienin luku askelten jälkeen.

Toteuta funktio niin, että se suorittaa nopeasti jokaisen askeleen. Funktion tulee antaa tulos välittömästi myös tehtäväpohjan viimeisessä testissä.

def find_smallest(steps):
    # TODO

if __name__ == "__main__":
    print(find_smallest(0)) # 1
    print(find_smallest(1)) # 2
    print(find_smallest(2)) # 3
    print(find_smallest(3)) # 4
    print(find_smallest(4)) # 6
    print(find_smallest(5)) # 8

    print(find_smallest(42)) # 1296
    print(find_smallest(1337)) # 16210220612075905068
    print(find_smallest(123123)) # 47241633171870338440585357243035120029747450090811731814934867117962334088709324512562801224664331563355142646399182644605958987116029586018592281978123083613432358051028210559768563023872