您的位置:首页 > 其它

2467: [中山市选2010]生成树

2018-03-06 08:00 190 查看
根据题意:



当n等于2的时候其实他是这么一种情况...
我们考虑总方案数,发现对于一个正五边形,
删去他的任意一条边都还是会使他在中心的点连通,
但是如果删去两条边,则至少得把他的中心边删去,否则会出现一个点没有任何边能到达.
发现删去两条边的五边形肯定只能有一个,因为他把该五边形中间两点分离,
所以有n个五边形的生成树方案就是 n*4 * 5^n-1
(对于一个删两边的五边形有四种删法,然后其他所有的五边形都有5种删法)
c++代码如下:#include<bits/stdc++.h>
#define rep(i,x,y) for(register int i = x;i <= y ;++ i)
#define repd(i,x,y) for(register int i = x;i >= y ;-- i)
using namespace std;
typedef long long ll;
const int p = 2007;
template<typename T>inline void read(T&x)
{
x = 0;char c;int sign = 1;
do { c = getchar(); if(c == '-') sign = -1; }while(!isdigit(c));
do { x = x * 10 + c - '0'; c = getchar(); }while(isdigit(c));
x *= sign;
}

inline void solve()
{
int n;
read(n);
int ans = 1;
rep(i,1,n - 1) ans = ans * 5 % p;
ans = (ans * 4 % p) * n % p;
printf("%d\n",ans);
}

int main()
{
int t;
read(t);
while(t--)
solve();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: