P5259 [JSOI2013]游戏中的学问
标签:sizeof size 排列 数据 cpp ret 游戏 while 多项式
环排列的EGF为:
\[f(x)=\sum_{3\le i} {(i-1)! x^i \over i!}=\sum_{3\le i} {x^i \over i}
\]
那么这道题答案就是 :
\[{n!\over k!}[x^n]f^k(x)
\]
数据范围太小,甚至多项式乘法不用 NTT
#include
#include
#include
using namespace std;
const int N = 3005;
int n, k, p;
inline int power(int a, int b) {
int k = b, t = 1, y = a;
while (k) {
if (k & 1) t = (1ll * t * y) % p;
y = (1ll * y * y) % p; k >>= 1;
} return t;
}
inline int inv(int x) {
return power(x, p - 2);
}
int t[N], y[N], a[N], ans = 1;
int main() {
scanf("%d%d%d", &n, &k, &p);
for (int i = k + 1; i = p) t[i + j] -= p;
}
} k >>= 1;
for (int i = 0; i = p) y[i + j] -= p;
}
} printf("%d", ((1ll * ans * t[n]) % p + p) % p);
return 0;
}
P5259 [JSOI2013]游戏中的学问
标签:sizeof size 排列 数据 cpp ret 游戏 while 多项式
原文地址:https://www.cnblogs.com/wwlwakioi/p/14640471.html
评论