Tehtäväsi on selvittää, montako erilaista n-alkiosta minimikekoa voidaan muodostaa luvuista 1,2,\dots,n.
Esimerkiksi kun n=4, vaihtoehdot ovat taulukkoesityksenä [1,2,3,4], [1,2,4,3] ja [1,3,2,4] eli vastaus on 3.
Voit olettaa, että n on korkeintaan 25 ja vastaus on korkeintaan 10^{18}.
Python
Toteuta tiedostoon allheaps.py funktio count, joka antaa kekojen määrän.
def count(n):
# TODO
if __name__ == "__main__":
print(count(2)) # 1
print(count(3)) # 2
print(count(4)) # 3
print(count(5)) # 8
print(count(10)) # 3360
Java
Toteuta tiedostoon AllHeaps.java metodi count, joka antaa kekojen määrän.
public class AllHeaps {
public long count(int n) {
// TODO
}
public static void main(String[] args) {
AllHeaps a = new AllHeaps();
System.out.println(a.count(2)); // 1
System.out.println(a.count(3)); // 2
System.out.println(a.count(4)); // 3
System.out.println(a.count(5)); // 8
System.out.println(a.count(10)); // 3360
}
}
