CSES - Kaikki keot

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
    }
}