思维题?
利用破圈算法的思想,想要将每一个环都删去一条边.首先考虑周围的五边形,每一个五边形都是一个环所以要删掉一条边,注意.观察剩下的图后发现有两种情况.
- 中心多边形和周围五边形剩下的边组成了一个环
- 周围五边形连起来构成了一个环
不论哪种情况,我们都还需要删除一条边.对于情况1,删除一条中心多边形上的边.对于情况2,有些特殊.之所以能够达到情况2,是五边形删边的时都删除了与中心多边形共用的边,所以我们随意在剩下的多边形上删边即可.
总结以上两种情况,可以发现,只有一个五边形被删了两条边,并且其中一条是与中心多边形公用的边.其他的五边形只需随便删一条边.则答案为 4 ∗ n ∗ 5 n − 1 4*n*5^{n-1} 4∗n∗5n−1
#include<cstdio>
#include<algorithm>
using namespace std;
const int MOD=2007;
int ksm(int x,int y){
int res=1;
while(y){
if(y&1) res=res*x%MOD;
x=x*x%MOD;
y>>=1;
}
return res;
}
int main(){
int T,n;
scanf("%d",&T);
while(T--){
scanf("%d",&n);
printf("%d\n",4*n*ksm(5,n-1)%MOD);
}
}