Kokonaisluku on nouseva, jos jokainen numero on sama tai suurempi kuin edellinen numero. Esimerkiksi luvut 2, 347 ja 25568 ovat nousevia.
Tehtäväsi on laskea, montako nousevaa tietyn pituista kokonaislukua annetuista numeroista voidaan muodostaa.
Esimerkiksi kun luvun pituus on 3 ja sallitut numerot ovat 1, 2 ja 3, haluttu vastaus on 10, koska tässä tapauksessa nousevat luvut ovat 111, 112, 113, 122, 123, 133, 222, 223, 233 ja 333.
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 1 \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 00 ja 012 eivät ole nousevia lukuja, mutta 0 on nouseva luku.