【題目】
星際之門(一)
- 描述
-
公元3000年,子虛帝國統領着N個星系,原先它們是靠近光束飛船來進行旅行的,近來,X博士發明了星際之門,它利用蟲洞技術,一條蟲洞可以連通任意的兩個星系,使人們不必再待待便可立刻到達目的地。
帝國皇帝認爲這種發明很給力,決定用星際之門把自己統治的各個星系連結在一起。
可以證明,修建N-1條蟲洞就可以把這N個星系連結起來。
現在,問題來了,皇帝想知道有多少種修建方案可以把這N個星系用N-1條蟲洞連結起來?
- 輸入
- 第一行輸入一個整數T,表示測試數據的組數(T<=100)
每組測試數據只有一行,該行只有一個整數N,表示有N個星系。(2<=N<=1000000) - 輸出
- 對於每組測試數據輸出一個整數,表示滿足題意的修建的方案的個數。輸出結果可能很大,請輸出修建方案數對10003取餘之後的結果。
- 樣例輸入
-
2 3 4
- 樣例輸出
-
3 16
【AC CODE】4ms
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;
#define rep(i,a,n) for(int i = a; i < n; i++)
#define repe(i,a,n) for(int i = a; i <= n; i++)
#define clc(a,b) memset(a,b,sizeof(a))
#define MOD 10003
int pow_mod(int a, int n)//遞歸
{
if(!n) return 1;
int x = pow_mod(a,n>>1);
long long ans = (long long)x*x%MOD;
if(n&1) ans = ans*a%MOD;
return (int)ans;
}
int main()
{
#ifdef SHY
freopen("e:\\1.txt", "r", stdin);
#endif
int t;
scanf("%d%*c", &t);
while(t--)
{
int n;
scanf("%d%*c", &n);
printf("%d\n", pow_mod(n,n-2));
}
return 0;
}