zoukankan      html  css  js  c++  java
  • nyoj 127 星际之门(一)

    星际之门(一)

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:3
     
    描述

    公元3000年,子虚帝国统领着N个星系,原先它们是靠近光束飞船来进行旅行的,近来,X博士发明了星际之门,它利用虫洞技术,一条虫洞可以连通任意的两个星系,使人们不必再待待便可立刻到达目的地。

    帝国皇帝认为这种发明很给力,决定用星际之门把自己统治的各个星系连结在一起。

    可以证明,修建N-1条虫洞就可以把这N个星系连结起来。

    现在,问题来了,皇帝想知道有多少种修建方案可以把这N个星系用N-1条虫洞连结起来?

     
    输入
    第一行输入一个整数T,表示测试数据的组数(T<=100)
    每组测试数据只有一行,该行只有一个整数N,表示有N个星系。(2<=N<=1000000)
    输出
    对于每组测试数据输出一个整数,表示满足题意的修建的方案的个数。输出结果可能很大,请输出修建方案数对10003取余之后的结果。
    样例输入
    2
    3
    4
    样例输出
    3
    16

    题解:知道这题肯定是有规律的,但是一直推不出来,上网百度了一下,网上说是cayley n顶点树数定理 即n个不同的点由n-1条边相连,可以形成n^(n-2)棵树

    #include<stdio.h>
    #include<string.h>
    #include<vector>
    #include<map>
    #include<queue>
    #include<stack>
    #include<cstdio> 
    #include<string>
    #include<math.h>
    #include<algorithm>
    #define LL long long
    #define PI atan(1.0)*4
    #define DD double
    #define MAX 20000
    #define mod 10003
    #define dian 1.000000011
    #define INF 0x3f3f3f
    using namespace std;
    int main()
    {
    	int n,m,j,i,t,k;
    	scanf("%d",&t);
    	while(t--)
    	{
    		scanf("%d",&n);
    		int sum=1;
    		for(i=1;i<=n-2;i++)
    		{
    			sum*=n;
    			sum%=mod;
    		}
    		printf("%d
    ",sum);
    	}
    	return 0;
    }
    
     
    
    
    

      

     
  • 相关阅读:
    Trapping Rain Water
    Construct Binary Tree from Preorder and Inorder Traversal
    Flatten Binary Tree to Linked List
    Permutations II
    Unique Paths II
    Path Sum II
    Unique Binary Search Trees II
    evdev module-----uinput.py
    evdev module-----events.py
    evdev module-----device.py
  • 原文地址:https://www.cnblogs.com/tonghao/p/5342527.html
Copyright © 2011-2022 走看看