一眼看到資料範圍,輸入只有1個n,n<100果斷打表。然而好像跑錶的複雜度不茲磁啊,要跑幾年。所以要打表找規律。
#include//這是小資料打表
#include
using
namespace
std;
struct eb[100005];
int cnt,n;
int use[100005];
int fa[100005];
int find(int x)
int ans;
void dfs(int x,int k)
}if(h) ans++;
return ;
}if(x>cnt) return ;
use[k+1]=x;
dfs(x+1,k+1);
dfs(x+1,k);
}int main()
; b[++cnt]=(e);
for(int i=1;i<=n;i++)
b[++cnt]=(e);
dfs(1,0);cout
<" "
1 12 5
3 16
4 45
5 121
6 320
7 841
8 2205
9 5776
10 15125
11 39601
12 103680
13 271441
14 710645
15 1860496
16 4870845
17 12752041
18 33385280
*/
我打出n<=17的答案,想起在某學堂講過自動找規律機,但我當時在頹廢,於是硬生生的用眼瞪出了規律,合理猜想,大膽假設。對於奇數,答案都是某個數c【i】的平方。c[i]=c[i-2]*3-c[i-4];
對於偶數,答案是某個數c[i]除以5,c[i]=c[i-2]*7-c[i-4]+2;
然後是高精度。
#include
#include
using
namespace
std;
struct big
void pre()
if(a[i]>9)}}
}f[105];
big operator *(big a,int b)
big zero;
big operator *(big a,big b)
big operator -(big a,big b)
}int x=0;
for(int i=a.x;i>=1;i--)
}a.x=x;
return a;
}int main()
else
f[n]=f[n]*5;
f[n].print();
}return
0;}
BZOJ 1002 輪狀病毒
time limit 1 sec memory limit 162 mb submit status 給定n n 100 程式設計計算有多少個不同的n輪狀病毒。第一行有1個正整數n。將程式設計計算出的不同的n輪狀病毒數輸出 3 16 第一眼看上去,n 100 不錯 打表 於是就寫了乙個暴力搜尋 可是...
動態規劃 BZOJ 1002 輪狀病毒
time limit 1 sec memory limit 162 mb submit 1947 solved 1056 submit status 第一行有1個正整數n。將程式設計計算出的不同的n輪狀病毒數輸出 3 16題意 給出乙個n各節點的 輪子 圖,中間的節點不算入n中,你要選取一些邊,使得...
bzoj1002 輪狀病毒 遞推 高精度
輪狀病毒有很多變種,所有輪狀病毒的變種都是從乙個輪狀基產生的。乙個n輪狀基由圓環上n個不同的基原子 和圓心處乙個核原子構成的,2個原子之間的邊表示這2個原子之間的資訊通道。如下圖所示 n輪狀病毒的產生規律是在乙個n輪狀基中刪去若干條邊,使得各原子之間有唯一的資訊通道,例如共有16個不 同的3輪狀病毒...