CSES - Askeleet

Tarkastellaan vielä edellisen tehtävän konetta. Montako eri tapaa on tuottaa luku xx koneen avulla?

Esimerkiksi kun x=17x=17, tavat ovat seuraavat:

  • 124714171 \rightarrow 2 \rightarrow 4 \rightarrow 7 \rightarrow 14 \rightarrow 17
  • 12481114171 \rightarrow 2 \rightarrow 4 \rightarrow 8 \rightarrow 11 \rightarrow 14 \rightarrow 17
  • 12581114171 \rightarrow 2 \rightarrow 5 \rightarrow 8 \rightarrow 11 \rightarrow 14 \rightarrow 17
  • 14714171 \rightarrow 4 \rightarrow 7 \rightarrow 14 \rightarrow 17
  • 1481114171 \rightarrow 4 \rightarrow 8 \rightarrow 11 \rightarrow 14 \rightarrow 17

Tässä tapauksessa tapojen määrä on 55.

Toteuta tiedostoon allsteps.py funktio count_steps, joka ilmoittaa, monellako tavalla luku xx voidaan tuottaa koneen avulla.

Funktion tulee toimia tehokkaasti, kun xx on välillä 110001 \dots 1000.

def count_steps(x):
    # TODO

if __name__ == "__main__":
    print(count_steps(1)) # 1
    print(count_steps(2)) # 1
    print(count_steps(3)) # 0
    print(count_steps(4)) # 2
    print(count_steps(5)) # 1
    print(count_steps(17)) # 5
    print(count_steps(42)) # 0
    print(count_steps(100)) # 242
    print(count_steps(1000)) # 2948311