CSES - Tehokas kaava

Sulkulausekkeiden määrä voidaan laskea kurssimateriaalin tapojen lisäksi tehokkaasti kaavalla

1n/2+1(nn/2),\frac{1}{n/2+1}{n \choose n/2},

missä oletuksena on, että nn on parillinen. Tässä (ab){a \choose b} on binomikerroin, joka voidaan laskea kaavalla

a!b!(ab)!.\frac{a!}{b!(a-b)!}.

Esimerkiksi kun n=6n=6, kaava antaa tuloksen

16/2+1(66/2)=204=5.\frac{1}{6/2+1}{6 \choose 6/2}=\frac{20}{4}=5.

Toteuta tiedostoon formula.py tähän kaavaan perustuva funktio count_sequences, joka laskee sulkulausekkeiden määrän. Funktion tulee antaa oikea tulos tehokkaasti myös silloin, kun nn on suuri.

def count_sequences(n):
    # TODO

if __name__ == "__main__":
    print(count_sequences(1)) # 0
    print(count_sequences(2)) # 1
    print(count_sequences(3)) # 0
    print(count_sequences(4)) # 2
    print(count_sequences(5)) # 0
    print(count_sequences(6)) # 5

    print(count_sequences(42)) # 24466267020
    print(count_sequences(1000)) # 539497486917039060909410566119711128734834348196703167679426896420410037336371644508208550747509720888947317534973145917768881736628103627844100238921194561723883202123256952806711505149177419849031086149939116975191706558395784192643914160118616272189452807591091542120727401415762287153293056320