CSES - Bittipoisto

Annettuna on bittijono, jossa on nn merkkiä. Joka askeleella saat poistaa kaksi vierekkäistä bittiä, jotka ovat samat. Monellako tavalla voit poistaa kaikki bitit?

Esimerkiksi kun bittijono on 100111100111, mahdollisia tapoja on 55:

  • 1001111111111\underline{00}111 \rightarrow \underline{11}11 \rightarrow \underline{11} \rightarrow (tyhjä)
  • 1001111111111\underline{00}111 \rightarrow 1\underline{11}1 \rightarrow \underline{11} \rightarrow (tyhjä)
  • 1001111111111\underline{00}111 \rightarrow 11\underline{11} \rightarrow \underline{11} \rightarrow (tyhjä)
  • 100111100111100\underline{11}1 \rightarrow 1\underline{00}1 \rightarrow \underline{11} \rightarrow (tyhjä)
  • 1001111001111001\underline{11} \rightarrow 1\underline{00}1 \rightarrow \underline{11} \rightarrow (tyhjä)

Voit olettaa, että 1n301 \le n \le 30. Koodisi tulee toimia tehokkaasti kaikissa näissä tapauksissa.

Toteuta tiedostoon biterase.py funktio count, joka kertoo, monellako tapaa voit poistaa kaikki bitit.

def count(s):
    # TODO

if __name__ == "__main__":
    print(count("1100")) # 2
    print(count("1001")) # 1
    print(count("100111")) # 5
    print(count("11001")) # 0
    print(count("1100110011100111")) # 113925