CSES - Nousevat luvut

Kokonaisluku on nouseva, jos jokainen numero on sama tai suurempi kuin edellinen numero. Esimerkiksi luvut 22, 347347 ja 2556825568 ovat nousevia.

Tehtäväsi on laskea, montako nousevaa tietyn pituista kokonaislukua annetuista numeroista voidaan muodostaa.

Esimerkiksi kun luvun pituus on 33 ja sallitut numerot ovat 11, 22 ja 33, haluttu vastaus on 1010, koska tässä tapauksessa nousevat luvut ovat 111111, 112112, 113113, 122122, 123123, 133133, 222222, 223223, 233233 ja 333333.

Toteuta tiedostoon incnum.py funktio count_numbers, jolle annetaan luvun pituus ja sallitut numerot merkkijonona. Funktion tulee palauttaa nousevien lukujen määrä.

Funktion tulee toimia tehokkaasti, kun luvun pituus on 1101 \dots 10 numeroa.

def count_numbers(length, numbers):
    # TODO

if __name__ == "__main__":
    print(count_numbers(3, "123")) # 10
    print(count_numbers(5, "1")) # 1
    print(count_numbers(2, "137")) # 6
    print(count_numbers(8, "25689")) # 495
    print(count_numbers(1, "0")) # 1
    print(count_numbers(2, "0")) # 0
    print(count_numbers(10, "12")) # 11
    print(count_numbers(10, "123456789")) # 43758

Huomaa, että nousevassa luvussa ei saa olla etunollaa, jos luvussa on kaksi tai useampia numeroita. Tämän takia esimerkiksi 0000 ja 012012 eivät ole nousevia lukuja, mutta 00 on nouseva luku.