链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=127
//cayley定理 #include <iostream> using namespace std; int main() { int x,ans,i,m; scanf("%d",&x); while(x--) { scanf("%d",&m); ans=m; for(i=1;i<m-2;i++) { ans*=m; ans%=10003; } if(ans==2) printf("1 "); else printf("%d ",ans); } return 0; }
以下摘自百度百科:
此定理说明用n-1条边将n个一致的顶点连接起来的连通图的个数为n^(n-2),也可以这样理解,将n个城市连接起来的树状公路网络有n^(n-2)种方案。所谓树状,指的是用n-1条边将n个顶点构成一个连通图。当然,建造一个树状的公路网络将n个城市连接起来,应求其中长度最短、造价最省的一种,或效益最大的一种。Cayley定理只是说明可能方案的数目。