bzoj1002 FJOI2007 輪狀病毒

2022-05-31 05:48:12 字數 1239 閱讀 3843

time limit: 1 sec  memory limit: 162 mb

submit: 4381  solved: 2393

[submit][status][discuss]

輪狀病毒有很多變種,所有輪狀病毒的變種都是從乙個輪狀基產生的。乙個n輪狀基由圓環上n個不同的基原子

和圓心處乙個核原子構成的,2個原子之間的邊表示這2個原子之間的資訊通道。如下圖所示

n輪狀病毒的產生規律是在乙個n輪狀基中刪去若干條邊,使得各原子之間有唯一的資訊通道,例如共有16個不

同的3輪狀病毒,如下圖所示

現給定n(n<=100),程式設計計算有多少個不同的n輪狀病毒

第一行有1個正整數n

計算出的不同的n輪狀病毒數輸出316

用基爾多夫矩陣推出乙個遞推式:f[i]=f[i-1]*3-f[i-2]+2  (我也不會證)

關於基爾多夫矩陣,傳送門:

當然,得用到高精度。

1 #include2 #include3 #include4 #include5 #include6 #include7 #include8

using

namespace

std;

9struct bignumf[110

],p;

10int

n;11

bignum add(bignum a,bignum b)

1225}26

if(c.num[len]>0

)27 len++;

28 c.len=len;

29return

c;30

}31 bignum mull(bignum a,int

b)32

44}

45 len=len+1;46

while(c.num[len]>0)47

51 c.len=--len;

52return

c;53}54

bignum sub(bignum a1,bignum b1)

556768}

69while(a1.num[len]==0&&len>1) len--;

70 a1.len=len;

71return

a1;72}73

74void

print(bignum c)

7580

intmain()

81

view code

FJOI2007 bzoj1002 輪狀病毒

description 輪狀病毒有很多變種,所有輪狀病毒的變種都是從乙個輪狀基產生的。乙個n輪狀基由圓環上n個不同的基原子 和圓心處乙個核原子構成的,2個原子之間的邊表示這2個原子之間的資訊通道。如下圖所示 n輪狀病毒的產生規律是在乙個n輪狀基中刪去若干條邊,使得各原子之間有唯一的資訊通道,例如共有...

BZOJ 1002 FJOI2007 輪狀病毒

1002 fjoi2007 輪狀病毒 time limit 1 sec memory limit 162 mb description 輪狀病毒有很多變種,所有輪狀病毒的變種都是從乙個輪狀基產生的。乙個n輪狀基由圓環上n個不同的基原子 和圓心處乙個核原子構成的,2個原子之間的邊表示這2個原子之間的資...

BZOJ1002 FJOI2007 輪狀病毒

標籤 高精度,數學 description 輪狀病毒有很多變種,所有輪狀病毒的變種都是從乙個輪狀基產生的。乙個n輪狀基由圓環上n個不同的基原子 和圓心處乙個核原子構成的,2個原子之間的邊表示這2個原子之間的資訊通道。如下圖所示 n輪狀病毒的產生規律是在乙個n輪狀基中刪去若干條邊,使得各原子之間有唯一...