Aluksi listan sisältö on . Joka askeleella otat listan kaksi ensimmäistä alkiota ja siirrät ne listan loppuun käänteisessä järjestyksessä. Mikä on listan ensimmäinen alkio askeleen jälkeen?
Esimerkiksi kun ja , lista muuttuu näin:
Tässä tapauksessa listan ensimmäinen alkio on siis .
Voit olettaa, että on välillä ja on enintään . Tavoitteena on, että algoritmin aikavaativuus on .
Toteuta tiedostoon fliptwo.py
funktio solve
, joka palauttaa ensimmäisen alkion askeleen jälkeen.
def solve(n,k): # TODO if __name__ == "__main__": print(solve(4,3)) # 4 print(solve(12,5)) # 11 print(solve(99,555)) # 11 print(solve(12345,54321)) # 9875
Lisähaaste: Tehtävä on mahdollista ratkaista myös matemaattisesti ajassa . Voit halutessasi miettiä myös tällaista ratkaisua.