[bzoj2467][中山市选2010]生成树(ksm乱搞)

来源:互联网 发布:nginx apache php性能 编辑:程序博客网 时间:2024/05/22 01:47

题目:

我是超链接

题解:

我们先在每一个正五边形上切一刀,然后就可以发现有4n个点,4n条边,是一个环套树,还需要切一条边。就可以发现一定有一个五边形被切了两条边,而一定有一条边在中间的n边形上。
拆掉两条边的多边形有n种选择,除了中间那一条边还有4种选择,剩下的五边形在5条边中任意切除一条
答案就是4n5n1

代码:

#include <cstdio>#include <iostream>#define LL long longusing namespace std;const int ATP=2007;LL ksm(LL k){    LL ans=1,a=5;    for (;k;k>>=1,a=a*a%ATP)      if (k&1) ans=a*ans%ATP;    return ans;}int main(){    int T,i,n,m;    scanf("%d",&T);    while (T--)    {        scanf("%d",&n);        printf("%d\n",4*n%ATP*ksm(n-1)%ATP);    }}
原创粉丝点击