CSES - Datatähti 2023 loppu - Merkkijonot
  • Language:
  • Time limit: 1.00 s
  • Memory limit: 512 MB

Sinulle on annettu merkkijonoja, joista jokainen koostuu merkeistä a ja b. Monellako tavalla merkkijonot voidaan jakaa kahteen joukkoon X ja Y niin, että molemmissa joukoissa on yhtä paljon kumpaakin merkkiä?

Syöte

Syötteen ensimmäisellä rivillä on kokonaisluku n: merkkijonojen lukumäärä.

Tämän jälkeen tulee n riviä, joista jokaisella on yksi merkkijono.

Tuloste

Tulosta yksi kokonaisluku: kelvollisten tapojen lukumäärä modulo 10^9+7.

Esimerkki 1

Syöte:

5
aba
ba
aab
bba
abbab

Tuloste:

4

Selitys: Mahdolliset jakotavat ovat:

  • X=\{\textrm{aba, ba, bba}\}, Y=\{\textrm{aab, abbab}\}
  • X=\{\textrm{aab, abbab}\}, Y=\{\textrm{aba, ba, bba}\}
  • X=\{\textrm{aba, abbab}\}, Y=\{\textrm{aab, ba, bba}\}
  • X=\{\textrm{aab, ba, bba}\}, Y=\{\textrm{aba, abbab}\}

Esimerkki 2

Syöte:

4
a
a
a
a

Tuloste:

6

Selitys: Jakotapa on aina muotoa X=\{\textrm{a, a}\}, Y=\{\textrm{a, a}\}. Voidaan valita 6 tavalla, mitkä merkkijonot ovat joukossa X.

Osatehtävä 1 (15 pistettä)

  • Merkkijonoissa on yhteensä korkeintaan 16 merkkiä

Osatehtävä 2 (55 pistettä)

  • Merkkijonoissa on yhteensä korkeintaan 100 merkkiä

Osatehtävä 3 (30 pistettä)

  • Merkkijonoissa on yhteensä korkeintaan 500 merkkiä