輪狀病毒有很多變種,所有輪狀病毒的變種都是從乙個輪狀基產生的。乙個n輪狀基由圓環上n個不同的基原子
和圓心處乙個核原子構成的,2個原子之間的邊表示這2個原子之間的資訊通道。如下圖所示
n輪狀病毒的產生規律是在乙個n輪狀基中刪去若干條邊,使得各原子之間有唯一的資訊通道,例如共有16個不同的3輪狀病毒,如下圖所示
現給定n(n<=100),程式設計計算有多少個不同的n輪狀病毒
第一行有1個正整數n
計算出的不同的n輪狀病毒數輸出
3
16
none
暴力\(2^n\)
#include#define ll long long
ll in()
struct node
}e[110000];
int b[100000];
int n, m, ans;
int fa[1000010];
int findset(int x)
void getans(int num)
ans++;
}void dfs(int dep, int num)
b[num + 1] = dep;
dfs(dep + 1, num + 1);
dfs(dep + 1, num);
}int main()
打表1, 5, 16, 45, 121, 320, 841, 2205, 5776, 15125, 39601, 103680, 271441
然後發現有很多完全平方數
發現都在奇數項位置
於是開方後得到
1, 4, 11, 29, 76,199, 521
通過下面的程式找到規律#include#define ll long long
ll in()
int f = ;
bool judge(int i, int j, int v)
int main()
}return 0;
}
發現規律 \(f[i]=3*f[i-1]-f[i-2]\)
討論完奇數項,自然到了偶數項,發現都是5的倍數,除去5之後,居然跟奇數項的規律一毛一樣
還得寫高精qwq
code
#include#define ll long long
ll in()
struct node
} void jinwei()
friend node operator + (const node &a, const node &b)
return t.jinwei(), t;
} friend node operator - (const node &a, const node &b)
return t.jinwei(), t;
} friend node operator * (const node &a, const node &b)
return t.jinwei(), t;
} void print()
}a[111];
int main()
else
} return 0;
}
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輪狀基中刪去若干條邊,使得各原子之間有唯一...