CSES - Hyppely

Pelaat peliä, jossa on nn tasoa. Olet aluksi tasolla 00 ja sinun tulee päästä tasolle nn. Joka askeleella voit hypätä aa tai bb tasoa ylemmäs. Monellako tavalla voit läpäistä pelin?

Esimerkiksi kun n=4n=4, a=1a=1 ja b=2b=2, tapoja on 55:

  • 012340 \rightarrow 1 \rightarrow 2 \rightarrow 3 \rightarrow 4
  • 01240 \rightarrow 1 \rightarrow 2 \rightarrow 4
  • 01340 \rightarrow 1 \rightarrow 3 \rightarrow 4
  • 02340 \rightarrow 2 \rightarrow 3 \rightarrow 4
  • 0240 \rightarrow 2 \rightarrow 4

Voit olettaa, että 3n503 \le n \le 50 ja 1a<bn1 \le a < b \le n.

Python

Toteuta tiedostoon jumping.py funktio count, joka ilmoittaa vastauksen.

def count(n,a,b):
    # TODO

if __name__ == "__main__":
    print(count(4,1,2)) # 5
    print(count(10,2,5)) # 2
    print(count(10,6,7)) # 0
    print(count(30,3,5)) # 58
    print(count(50,2,3)) # 525456

Java

Toteuta tiedostoon Jumping.java metodi count, joka antaa vastauksen.

public class Jumping {
    public long count(int n, int a, int b) {
        // TODO
    }

    public static void main(String[] args) {
        Jumping j = new Jumping();
        System.out.println(j.count(4,1,2)); // 5
        System.out.println(j.count(10,2,5)); // 2
        System.out.println(j.count(10,6,7)); // 0
        System.out.println(j.count(30,3,5)); // 58
        System.out.println(j.count(50,2,3)); // 525456
    }
}