小朋友學奧數(21):康託展開

一、康託展開運算

把一個整數X展開成如下形式: X = an * (n - 1)! + an-1 * (n - 2)! + … + ai * (i - 1)! + … + a2 * 1! + a1 * 0! 其中,ai爲整數,並且0 <= ai < i,1 <= i <= n)。 ai表示原數的第i位在當前未出現的元素中是排在第幾個。

康託展開的最基本應用就是求一個排列(按字典序)的序號(即第幾個)。而其逆運算就是求序號對應的排列。

二、例子

例1:n = 3時,即三位數字的全排列,321的序號是多少?

方法一: 1 2 3這三個數按字典序來進行排列,得:

123
132
213
213
312
321

這裏可以看出321是第6個數。

方法二: 321的第一位是3,則第一位小於3的數一定排在321的後面,這樣的排列有22!個。 321的第二位是2,則第一位等於3第二位小於2的數一定排在321的後面,這樣的排列有11!個。 321的第三位是1,則第一位爲3第二位爲2第3位小於1的數一定排在321的後面,這樣的排列有0個。 所以排在321前面的數有2 * 2! + 1 * 1! = 5個。321是第5 + 1 = 6個數。

例2:對於n = 3的全排列,第6個數是多少?

分析: 現將序號減去1,爲5。 5/2!=2餘1,說明比第一位數小的數有2個,那麼第一位肯定爲3。 上一步的餘數/1! = 1/1!=1餘0,說明比第二位小的數有1個,那麼第二位肯定是2。 第三爲只能爲1了。 所以第6個數是321。

例3:n = 4的全排列中,1324是第幾個數?

1324的第一位是1,小於1的數有0個,所以總共有 0 * 3! = 0個。 1324的第二位是3,小於3的數有1和2,但1已經在第一位了,所以只有一個數2。再考慮第三位和第四位的排列數爲2!,所以共有 12! = 2個。 1324的第三位是2,小於2的數是1,但1已經排在第一位了,所以有0個數 。 01! = 0。 所以比1324小的排列有0 * 3! + 1 * 2! + 0 * 1! = 2個。 綜上,1324是的序號爲2 + 1 = 3。

例4:對於n = 6的全排列,153426的序號是多少?再往後數200個,得到的數是多少?

① 153426的第一位數是1,比1小的數有0個,共有0 * 5!= 0個。 153426的第二位數是5,比5小的數有4個,但是1已經出現在首位了,所以只有2,3,4這三個。共有3 * 4!= 72個。 153426的第三位數是3,比3小的數有2個,但是1已經出現在首位了,所以只有2這1個。共有1 * 3!= 6個。 153426的第四位數是4,比4小的數有3個,但是1和3已經出現在首位和第三位了,所以只有2這1個。共有1 * 2!= 2個。 153426的第五位數是2,比2小的數有1個,但是1已經出現在首位了,所以共有0 * 1!= 0個。 153426的第六位數是6,比6小的數有5個,但是這5個數已經被前五位數佔了,所以共有0 * 0!= 0個。 綜上,153426排在第72 + 6 + 2 + 1 = 81個。

② 第81個再往後數200個,就是第281個。 首先將281減去1,即280。 第一位爲280 / 5! = 2餘40,說明比第一位數小的數有2個,則第一位數必爲3 上一步的餘數 / 4! = 40 / 4! = 1餘16,說明比第二位數小的數有1個,第二位數必爲2。 上一步的餘數 / 3! = 16 / 3!= 2餘4,說明比第三位數小的數有2個。在前兩位數是3和2的前提下,第三位只能爲5,這樣比它小的兩個數爲1或4。 上一步的餘數爲 4/ 2! = 2餘0 ,說明比第四位數小的數有2個。因爲前三位數分別爲3、2、5,則第四位數必爲6。 上一步的餘數爲 0/1! = 0餘0 ,說明比第五位數小的數有0個,則第五位數必爲1。 剩下一位數爲4。 綜上,153426往後數的第200個數是325614。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章