切換
舊版
前往
大廳
主題

ZeroJudge - d541: “∧”形排列 解題心得

Not In My Back Yard | 2018-08-05 14:33:29 | 巴幣 0 | 人氣 119

題目連結:d541: “∧”形排列

題目大意:給定N(N ≦ 2000000000),求出1~N的正整數的排列數裡面,符合先遞增再遞減(12543這種)或是只遞增、遞減的方法數(取1234567的餘數)。

解題思維:
先觀察N=2,有12、21,2種;N=3,有123、231、132、321,這4種方式;再來,N=4,有1234、2341、1342、1243、3421、2431、1432、4321,這8種。

因此,猜測所求方法數為2 ^ (N-1)種(N=0設為0種)。而這個猜測為「真」的緣由是因為一個排列組合的基本性質。

觀察N=3的方法,可以發現其架構等同於以下:從1~2取0個數放到3的後面(123)+1~2取1個數放到3的後面(231及132)+1~2取2放到3後面(321)。也就是總方法數為C2取0+C2取1+C2取2=4=2 ^ 2。

同理,N=4時為C3取0+C3取1+C3取2+C3取3=8=2 ^ 3。

因為巴斯卡三角形與(X+1)^ N的係數有著密切關係,所以當X=1時,巴斯卡三角形的第N列的數之和正是2 ^ N。而這剛好也是我們題目的所求。

但是由於題目給定的N可以到20億,所以需要快速冪來幫忙加速。快速冪:參見之前的文章的大概中後的段落。



此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大們可以提出來討論。

創作回應

相關創作

更多創作