回答編集履歴
1
速度について追記
answer
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
maisumakunさんも指摘されているように、再帰呼び出しによるスタックオーバーフローでしょう。
|
2
2
|
再帰呼び出しをループで書き直せば動くはずです。
|
3
|
+
関数呼び出しが減るので高速化にもなります。
|
3
4
|
|
4
5
|
```C++
|
5
6
|
// x^a をMODで割った余りを求める
|
6
7
|
long long modPow(long long x, long long a)
|
7
8
|
{
|
8
|
-
|
9
9
|
long long ret = 1;
|
10
10
|
x %= MOD;
|
11
11
|
while(0 < a)
|
@@ -22,7 +22,6 @@
|
|
22
22
|
return ret;
|
23
23
|
}
|
24
24
|
|
25
|
-
|
26
25
|
// n! をMODで割った余りを求める
|
27
26
|
long long modfactor(long long n)
|
28
27
|
{
|
@@ -36,5 +35,4 @@
|
|
36
35
|
}
|
37
36
|
return modfac[n];
|
38
37
|
}
|
39
|
-
|
40
38
|
```
|