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 #include8view codeusing
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
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輪狀基中刪去若干條邊,使得各原子之間有唯一...