Kokonaisluku on nouseva, jos jokainen numero on sama tai suurempi kuin edellinen numero. Esimerkiksi luvut , ja ovat nousevia.
Tehtäväsi on laskea, montako nousevaa tietyn pituista kokonaislukua annetuista numeroista voidaan muodostaa.
Esimerkiksi kun luvun pituus on ja sallitut numerot ovat , ja , haluttu vastaus on , koska tässä tapauksessa nousevat luvut ovat , , , , , , , , ja .
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 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 ja eivät ole nousevia lukuja, mutta on nouseva luku.