这个题目,打眼一看,需要你返回一个每个位都不同的数字,而这个数字的取值范围是0<=x<=10^n
按照惯性思维,我当时是想要直接暴力遍历一下,但是注意到了一个点,n的取值范围,如果n=8,那么这个10^n就太大了,遍历一遍实际上是不可行的。
但是我们可以先观察。
在n数值很小的时候,我们可以发现规律,n=0,那么x就只好为0了,而0是很显然符合要求。
n=1,范围就更大了一些,但是注意!x是小于10^n,而不可以等于!
所以,x就可以取值0----9,总共十个数字,也是最简单朴素的一位数。
但是当n=2以后,就出现了分支!
我们把每个位单独拎出来处理,会发现,当十位数取一个值,个位数还能再取10-1中,也就是说,2位数有9*9=81种每个位互不相同的数字!
再加上1位数的10种,总共是91种!
当n=3时,我们发现,3位数还在2位数的基础上再乘10-1-1=8,得到了648种结果,再加上1位数和2位数的结果,总共有739种结果!
我们发现,这是不是排列组合啊!!
那么以此类推,
我们可以得到一条数学推论: