BZOJ 2467: [中山市选2010]生成树|组合数学

有一个五边形切去两条边,其中一条必须是中间n边圈上的边,其他的五边形都任意切去一条边。(建议动手画一画)
答案就是 4n5n1

#include<bits/stdc++.h>
using namespace std;
const int R=2007;
int T;
int cal(int x)
{
    int ans=4*x%R;
    for(int n=x-1,y=5;n;n>>=1,y=y*y%R)
        if(n&1)ans=ans*y%R;
    return ans;
}   
int main()
{
    cin>>T;
    while(T--)
    {
        int x;cin>>x;
        cout<<cal(x)<<endl;
    }
}

你可能感兴趣的:(组合数学)