原题解答
本次的题目如下所示(原题出处:蓝桥杯):
【提示信息】
一个正整数如果任何一个数位小于等于右边相邻的数位,则称为一个数位递增数。
例如:
1135是一个数位递增数
1024不是一个数位递增数
【编程实现】
输入一个正整数 n(10<n<10001),输出10到n (包含10和n)中有多少个数位递增数。
输入描述:输入一个正整数 n(10<n<10001)
输出描述:输出10到n中有多少个数位递增数
【样例输入】
15
【样例输出】
5
【上述输入输出样例的进一步解释】
用户输入的正整数,即样例输入为15,10到15之间的数位递增数有:11、12、13、14、15。所以样例输出为5。
这一题是典型的枚举题型,这种题型我们需要解决两个问题:
- 枚举的范围
- 判断的条件
从题目中我们可以看出,枚举的范围从10开始到输入的数为止。我们很明显可以得到范围是range(10, n+1),根据递增数的定义,10明显可以被排除掉,因此枚举的范围可以定义为range(11, n)。
剩下要解决的关键问题是判断的条件。在第2讲中,我们已经讲过如何得到一个整数各个数位上的数值了。我们将各个数位上的数存到一个列表中,并对相邻的两项进行大小比较。满足条件即可确定该数为递增数。
由于判断相邻两项大小比较需要在循环