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

如果不是hz说是大水题我还以为是数论。。

如果n个五边形每个断掉一条边,我们就会得到一个基环外向树。

此时还需要断掉一条边,也就是n个五边形中就有一个五边形要断掉两条边,其他断一条。

而且有一条肯定是在中心的那个n边形上,从n个五边形中选取一个是选两条边的,而且五边形在中间n边形上那条边必选,

那就在在剩下4条边再断一条,而剩下的n−1个五边形就随便断一条。

公式就是:n(挑那个断两条边的)* 4(这个五边形有四种选择)* 5^(n-1)(剩下的n-1个都有五种选择)

然后快速幂取mod

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
const int mod=2007;

int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int n;
        scanf("%d",&n);
        
        int ans=(n*4)%mod,A=5;
        n--;
        
        while(n>0)
        {
            if(n%2==1)ans=(ans*A)%mod;
            A=(A*A)%mod;n/=2;
        }
        printf("%d\n",ans);
        
        
    }
    return 0;
}

 

posted @ 2018-02-07 16:15  AKCqhzdy  阅读(95)  评论(0编辑  收藏  举报