求所有这样的正整数的个数,它在n进制中表示的数字各不相同,并且除去最左边的数字外每个数字均和他左边某
1个回答

不妨把问题用数列来叙述,即求满足如下条件的数列的个数.

① 数列各项为0~n-1的整数,且各不相同.

② 除首项外,每一项均与前面某项相差±1.

③ 数列的首项不为0.

过程分三步.

首先,设满足①,②且长度为n的数列的个数为a[n].

对于长为n的数列,考虑其前n-1项,可不重不漏的分为两种情况.

(1) 各项为0~n-2的整数,且各不相同.

(2) 各项为1~n-1的整数,且各不相同.

由a[n]的定义,满足(1),②且长度为n-1的数列的个数为a[n-1].

而满足(2),②且长度为n-1的数列的个数也为a[n-1].

易见,这些长为n-1的数列可以唯一的延长为一个满足①,②的长度为n的数列.

不同的数列延长后仍不同,且所有满足①,②的长度为n的数列都能这样延长得到.

于是a[n] = 2a[n-1].由a[2] = 2 (包括01和10),可得a[n] = 2^(n-1).

其次,考虑满足①,②的长度不限的数列的个数.

其中长度为k的数列可以分为n-k+1类.分别由0~k-1,k,k+1,...,n-k~n-1的整数组成.

每类有a[k] = 2^(k-1)个数列,总共有(n-k+1)·2^(k-1)个.

总数为2^(n-1)+2·2^(n-2)+3·2^(n-3)+...+n·2^0 = (2^n-1)+(2^(n-1)-1)+...+(2^1-1) = 2^(n+1)-n-2.

最后,在上述数列中,首项为0的有n个:0,01,012,...,012...(n-1).

于是满足①,②,③的数列共有2^(n+1)-2n-2个.

即满足条件的n进制整数有2^(n+1)-2n-2个.