UVA 10843 - Anne's game

来源:互联网 发布:斗牛怎么玩法算法 编辑:程序博客网 时间:2024/06/05 08:16

Problem D
Anne's game
Time Limit: 2 seconds

Lily: "Chantarelle was part of my exotic phase."
Buffy: "It's nice. It's a mushroom."
Lily: "It is? That's really embarrassing."
Buffy: "Well, it's an exotic mushroom, if that's any comfort."

Joss Whedon, "Anne".

A little girl whose name is Anne Spetring likes to play the following game. She draws a circle on paper. Then she draws another one and connects it to the first cicrle by a line. Then she draws another and connects it to one of the first two circles by a line. She continues this way until she has n circles drawn and each one connected to one of the previously drawn circles. Her circles never intersect and lines never cross. Finally, she numbers the circles from 1 to n in some random order.

How many different pictures can she draw that contain exactly n circles? Two pictures are different if one of them has a line connecting circle number i to circle number j, and the other picture does not.

Input
The first line of input gives the number of cases, NN test cases follow. Each one is a line containing n(0<n<=100).

Output
For each test case, output one line containing "Case #x:" followed by X, where X is the remainder after dividing the answer by 2000000011.

Sample InputSample Output
3123
Case #1: 1Case #2: 1Case #3: 3


Problemsetter: Igor Naverniouk



思路:相当于求n个点有多少个生成树。 有公式 n ^ (n-2) .... 可以用那个什么编码推出来。不过应该dp也行。


代码:

#include <iostream>#include <vector>#include <algorithm>#include <string.h>#include <cstring>#include <time.h>#include <map>#include <set>#include <stdio.h>#include <cmath>#include <cassert>#include <math.h>#define rep(i,a,b) for(int i=(a);i<(b);++i)#define rrep(i,b,a) for(int i = (b); i >= (a); --i)#define clr(a,x) memset(a,(x),sizeof(a))#define LL long long#define eps 1e-9#define mp make_pairusing namespace std;const int mod = 2000000011;LL qpow(LL b,LL p){    LL ret = 1;    while (p > 0) {        if (p & 1) ret = b * ret % mod;        b = b * b % mod;        p >>= 1;    }    return ret;}int main(){    #ifdef ACM        freopen("in.txt", "r", stdin);       // freopen("out.txt","w",stdout);    #endif // ACM    int T; cin >> T;    rep(cas,1,T+1) {        int n; scanf("%d",&n);        printf("Case #%d: %lld\n",cas,qpow(n,n-2));    }}




0 0
原创粉丝点击