藍橋杯模擬 排列序數

2021-07-29 23:21:46 字數 1338 閱讀 8307

x星系的某次考古活動發現了史前智慧型痕跡。

這是一些用來計數的符號,經過分析它的計數規律如下:

(為了表示方便,我們把這些奇怪的符號用a~q代替)

abcdefghijklmnopq 表示0

abcdefghijklmnoqp 表示1

abcdefghijklmnpoq 表示2

abcdefghijklmnpqo 表示3

abcdefghijklmnqop 表示4

abcdefghijklmnqpo 表示5

abcdefghijklmonpq 表示6

abcdefghijklmonqp 表示7

…..

在一處石頭上刻的符號是:

bckfqlajhemgiodnp

請你計算出它表示的數字是多少?

請提交該整數,不要填寫任何多餘的內容,比如說明或注釋。

此題先前我不是用康托展開式寫的,雖然答案是對的,但是寫的很繁瑣,之後看見網友說這題可以用康托展開式寫,於是在網上搜了一下,果然這題是可以用康托展開式寫的。

康托展開式其實就乙個公式:

x=an*(n-1)!+an-1*(n-2)!+…+ai*(i-1)!+…+a2*1!+a1*0!

這個式子是由1到n這n個數組成的全排列,共n!個,按每個全排列組成的數從小到大進行排列,並對每個序列進行編號(從0開始),並記為x。

比如說1到4組成的全排列中,長度為4,1234對應編號0,1243對應編號1

那a1,a2,a3,a4是什麼意思呢?==>>

對1到4的全排列中,我們來考察3214,則

a4==2

a3==1

a2==0

a1=0(最後只剩下一項)

則x=2*3!+1*2!+0*1!+0*0!=14,即3214對應的編號為14。

因此,此題用康托展開式就可以出來了,將abcd…寫成1,2,3,4…就行了。

#include

long

long fun(long

long n)

int main();

long

long

sum = 0;

for(int i = 0;i<16;i++)

printf("%lld",sum);

return

0;}

藍橋杯模擬題 排列序數

x星系的某次考古活動發現了史前智慧型痕跡。這是一些用來計數的符號,經過分析它的計數規律如下 為了表示方便,我們把這些奇怪的符號用a q代替 abcdefghijklmnopq 表示0 abcdefghijklmnoqp 表示1 abcdefghijklmnpoq 表示2 abcdefghijklmn...

藍橋杯題目練習 排列序數

題目描述 如果用a b c d這4個字母組成乙個串,有4 24種,如果把它們排個序,每個串都對應乙個序號 abcd 0 abdc 1 acbd 2 acdb 3 adbc 4 adcb 5 bacd 6 badc 7 bcad 8 bcda 9 bdac 10 bdca 11 cabd 12 cad...

藍橋杯 2014 4 排列序數

如果用a b c d這4個字母組成乙個串,有4 24種,如果把它們排個序,每個串都對應乙個序號 abcd 0 abdc 1 acbd 2 acdb 3 adbc 4 adcb 5 bacd 6 badc 7 bcad 8 bcda 9 bdac 10 bdca 11 cabd 12 cadb 13 ...