ACM複習(34)9519 偷吃

2021-08-15 15:31:31 字數 1793 閱讀 6150

超牛和lyd最近買了好多零食啊,可是呢,因為龍教很貪吃,經常偷吃他們的東西。

為了要讓龍教吃不到,他們想到了個方法,他們叫pkkj給他們n個箱子,然後他們就把箱子排成一列,把他們買回來的三種零食(包括薯片,果凍還有餅乾)放進那裡面。

然後讓龍教猜箱子裡面的食物,只有兩次機會,猜不到就沒得吃。

所以他們想讓相鄰的箱子裡面放的東西不相同(如果箱子數大於1,那麼頭尾的食物也不能相同)。

他們想知道到底有多少種放法,因為他們迷上三國殺,懶得想,所以就請聰明的你幫他們算算吧。

輸入格式

輸入資料報含多個測試例項,每個測試例項佔一行,即pkkj給他們的箱子數n,(0 < n <= 50)。

輸出格式

對於每個測試例項,請輸出全部的滿足要求的放法,每個例項的輸出佔一行。

輸入樣例12

輸出樣例36

先將條件分為兩個

前後不同零食

首尾不同零食

我們需要的是同時滿足條件1和2的排列

首先考慮 n(n > 3)個箱子滿足條件1的排列數 n滿足條件1,顯然 n滿足條件1 = 3 * 2n-1

考慮 n滿足條件1 的解集:只包括兩種解集只滿足條件1滿足條件1和2

所以有:n滿足條件1和2 = n滿足條件1 - n只滿足條件1

下面分析只滿足條件1的排列

通過分析可以發現,對於任意n個箱子只滿足條件1的排列,其前n-1個箱子的排列同時滿足條件1和2,下面分析如何由後者推導出前者

分析後發現,因為只有三種零食,所以尾部加入的箱子中能並且只能裝入和第乙個箱子相同的零食,所以對於n-1個箱子同時滿足條件1和2的乙個排列只能推導出一種n個箱子只滿足條件1的排列

則有: n只滿足條件1 = (n-1)同時滿足條件1和2

代入: n同時滿足條件1和2 = n滿足條件1 - n只滿足條件1

得:n同時滿足條件1和2 = n滿足條件1 - (n-1)同時滿足條件1和2

所以先推導出n = 1,2,的排列數,其餘排列數可以通過公式遞推得到

#include

#include

intmain()

;for

(int i =

3; i <

51; i ++

) nums[i]

=pow(2

, i -1)

*3- nums[i -1]

;while

(scanf

("%d"

,&n)

!=eof

)printf

("%lld\n"

, nums[n]);

return0;

}

ACM複習(24)8623 龍龍

description 在比賽的時候,1y 1 次ac 是很值得高興的事情。但很多大牛總會因為很弱智的錯誤先wa 一次,再ac。而很多時候,這點罰時的差距使得他們與金牌無緣。弱智錯誤系列中最顯著的就是忘記加龍龍。龍龍外國人叫它作long long,表示64位整數,輸入與輸出64位整數則可以使用例如 ...

ACM複習(45)10680 飛機

description 某國成立了乙個新的航空公司。該公司準備採購飛機來運營屬下的兩條航線a與b。他們聯絡了一些飛機製造商,這些製造商提供了他們飛機的資料。資料裡面記錄了每種飛機的載客量,以及他們飛航線a與航線b所需要的燃油量。通過市場調查,該公司摸清了兩條航線的日均客流量。已知該航空公司每日能夠採...

ACM入門(筆試複習)指南

從大一下冊開始參加程式設計競賽,到大三下,沒給學校帶來什麼榮譽,倒是學校和老師無私的鍛鍊了我。雖然是acm出身,我一直不敢寫關於acm相關的部落格。可能內心一直覺得自己太菜了,怕大佬們笑話吧。acm知識點圖譜 這個是noip的,跟acm差不多 因為是入門 筆試複習 教程,所以我就不去整那些我自己看不...