Pelaat peliä, jossa on n tasoa. Olet aluksi tasolla 0 ja sinun tulee päästä tasolle n. Joka askeleella voit hypätä a tai b tasoa ylemmäs. Monellako tavalla voit läpäistä pelin?
Esimerkiksi kun n=4, a=1 ja b=2, tapoja on 5:
- 0 \rightarrow 1 \rightarrow 2 \rightarrow 3 \rightarrow 4
- 0 \rightarrow 1 \rightarrow 2 \rightarrow 4
- 0 \rightarrow 1 \rightarrow 3 \rightarrow 4
- 0 \rightarrow 2 \rightarrow 3 \rightarrow 4
- 0 \rightarrow 2 \rightarrow 4
Voit olettaa, että 3 \le n \le 50 ja 1 \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
}
}
