CSES - Bittipoisto

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

Esimerkiksi kun bittijono on 101100101100, mahdollisia tapoja on 55:

  • 101100110010\underline{10}1100 \rightarrow 1\underline{10}0 \rightarrow \underline{10} \rightarrow (tyhjä)
  • 1011001100101\underline{01}100 \rightarrow 1\underline{10}0 \rightarrow \underline{10} \rightarrow (tyhjä)
  • 101100101010101\underline{10}0 \rightarrow \underline{10}10 \rightarrow \underline{10} \rightarrow (tyhjä)
  • 101100101010101\underline{10}0 \rightarrow 1\underline{01}0 \rightarrow \underline{10} \rightarrow (tyhjä)
  • 101100101010101\underline{10}0 \rightarrow 10\underline{10} \rightarrow \underline{10} \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("1001")) # 2
    print(count("1100")) # 1
    print(count("101100")) # 5
    print(count("11001")) # 0
    print(count("01110100100110")) # 6027