ZZULIOJ 1876 禮上往來 全錯位排列)

2021-07-11 04:56:55 字數 1125 閱讀 3475

全錯位排列來自於裝信封問題。

瑞士數學家尤拉按一般情況給出了乙個遞推公式:

用a、b、c……表示寫著n位友人名字的信封,a、b、c……表示n份相應的寫好的信紙。把錯裝的總數為記作f(n)。假設把a錯裝進b裡了,包含著這個錯誤的一切錯裝法分兩類:

(1)b裝入a裡,這時每種錯裝的其餘部分都與a、b、a、b無關,應有f(n-2)種錯裝法。

(2)b裝入a、b之外的乙個信封,這時的裝信工作實際是把(除a之外的)(n-1 )份信紙b、c……裝入(除b以外的)n-1個信封a、c……,顯然這時裝錯的方法有f(n-1)種。

總之在a裝入b的錯誤之下,共有錯裝法f(n-2)+f(n-1)種。a裝入c,裝入d……的n-2種錯誤之下,同樣都有f(n-2)+f(n-1)種錯裝法,因此:

f(n)=(n-1)

公式可重新寫成 f(n)-nf(n-1)=-[f(n-1)-(n-1)f(n-2)] (n>2)

於是可以得到

f(n)-nf(n-1)=-[f(n-1)-(n-1)f(n-2)]

=((-1)^2)[f(n-2)-(n-2)f(n-3)]

=((-1)^3)[f(n-3)-(n-3)f(n-4)]

=……

=[(-1)^(n-2)][f(2)-2f(1)]

最終得到乙個更簡單的遞推式 f(n)=nf(n-1)+(-1)^(n-2)

或者等價式 f(n)=nf(n-1)+(-1)^(n) n=2,3,4……

#include 

#include

#include

#include

#include

#include

#include

#define inf 1e9

#define maxn 10005

#define mod 1000000007

using

namespace

std;

typedef

long

long ll;

ll solve(int n)

return s2;

}int main()

return

0;}

ZZULIOJ 1524 小P上考場

時間限制 1 sec 記憶體限制 128 mb 提交 132 解決 31 提交 狀態 討論版 命題人 外部匯入 題目描述 小p一覺醒來發現天已經亮了。今天是程式設計大賽的日子,小p需要盡快趕往考場。小p家在a號路口,他會告訴你哪些路口是相聯通的,距離是多少。賽場在b號路口,該市道路沒有單行道。小p想...

ZZULI 1867 禮上往來 錯排

time limit 1 sec memory limit 128 mb submit 216 solved 65 submit status web board 每當節日來臨,女友眾多的 總是能從全國各地的女友那裡收到各種禮物。有禮物收到當然值得高興,但回禮確是件麻煩的事!無論多麻煩,總不好意思收...

ZZULIOJ 1302 海軍節上的鳴炮聲計算

在海軍節開幕式上,有a b c三艘 要同時開始鳴放禮炮各n響。已知a艦每個a秒放一次,b艦每隔b秒放一次,c艦每隔c秒放一次。假設各炮手對時間的掌握非常準確,請程式設計計算觀眾總共可以聽到幾次炮聲。輸入n,a,b,c的值,所有輸入不大於10000。輸出乙個整數,代表觀眾聽到的禮炮聲總數。21 7 6...