CSES - Yhden muutos

Tehtäväsi on laskea, monellako tavalla merkeistä az voidaan muodostaa nn merkin pituinen merkkijono, jossa kaikki vierekkäiset merkit ovat myös vierekkäin aakkosissa.

Kun n=2n=2, haluttu vastaus on 5050. Tässä merkkijonon ensimmäinen merkki voi olla mikä tahansa merkki väliltä az (yhteensä 2626 vaihtoehtoa). Jos merkki on a tai z, seuraavan merkin valintaan on yksi vaihtoehto. Muuten seuraavan merkin valintaan on kaksi vaihtoehtoa. Tästä saadaan vastaus 2+242=502 + 24 \cdot 2 = 50.

Kun n=5n=5, haluttuja merkkijonoja ovat esimerkiksi ababa, cdcba ja bcdef.

Toteuta tiedostoon onediff.py funktio count_strings, jolle annetaan merkkijonon pituus. Funktion tulee palauttaa merkkijonojen määrä.

Funktion tulee toimia tehokkaasti, kun merkkijonon pituus on välillä 11001 \dots 100.

def count_strings(n):
    # TODO

if __name__ == "__main__":
    print(count_strings(1)) # 26
    print(count_strings(2)) # 50
    print(count_strings(3)) # 98
    print(count_strings(4)) # 192

    print(count_strings(42)) # 36766943673096
    print(count_strings(100)) # 7073450400109633000218032957656