#P936. 【UR #29】人机验证
【UR #29】人机验证
这是一道交互题,且仅只支持 C++20 语言。
由于大量波特的涌入,跳蚤王国的社区面临博客质量低下的问题。现在你需要进行人机验证以证明你是人类。
人机验证的题目如下:
对于一个函数 $f$,定义 $f_1(x)=f(x)$ and $f_n(x)=f(f_{n-1}(x))$。
给定 $n,a,b$ 和集合 $S=\{1,2,\ldots,n\}$。统计有多少个 $f:S\to S$ 满足 $\forall x\in S,f_a(x)=f_b(x)$。答案对 $998244353$ 取模。
实现细节
在本题中,你可以以交互的形式调用 挑战多项式最优解 的多项式操作。
我们建议你使用以下的这些函数来进行多项式操作。为了调用以下这些函数,你需要引用头文件 #include "poly.h"
。
void fastmul(int *a, int *b, int *c, int n);
。
- 设 $A(x)=\sum_{i=0}^{n}a_ix^i,B(x)=\sum_{i=0}^nb_ix^i$。
- 这个函数会将 $c_{i}$($0 \le i \le n$) 赋值为 $[x^i]A(x)B(x)$。
- 你需要保证 $a,b,c$ 的数组长度至少有 $n+1$ 且 $0\le a_i,b_i < 998244353$。
void fastexp(int *a, int *b, int n);
。
- 设 $A(x)=\sum_{i=0}^{n}a_ix^i$。
- 这个函数会将 $b_{i}$($0\le i\le n$) 赋值为 $[x^i]\exp A(x)$。
- 你需要保证 $a,b$ 的数组长度至少有 $n+1$,$a_0=0$,且 $0\le a_i < 998244353$。
void fastln(int *a, int *b, int n);
。
- 设 $A(x)=\sum_{i=0}^{n}a_ix^i$。
- 这个函数会将 $b_{i}$($0\le i\le n$) 赋值为 $[x^i]\ln A(x)$。
- 你需要保证 $a,b$ 的数组长度至少有 $n+1$,$a_0=1$,且 $0\le a_i < 998244353$。
void fastinv(int *a, int *b, int n);
。
- 设 $A(x)=\sum_{i=0}^{n}a_ix^i$。
- 这个函数会将 $b_{i}$($0\le i\le n$) 赋值为 $[x^i]\frac{1}{A(x)}$。
- 你需要保证 $a,b$ 的数组长度至少有 $n+1$,$a_0\neq 0$,且 $0\le a_i < 998244353$。
附加文件中存在一个 poly.h
供选手在本地环境下编译和测试,但速度比实际评测时的交互库更慢。
3 1 3
19
在 $3^3=27$ 种方案中,只有 $[2,3,1],[3,1,2],[1,1,2],[1,3,1],[3,2,2],[2,2,1],[2,3,3],[3,1,3]$ 不满足条件。
7 3 7
489217
样例三~九
他们分别满足 $2,3,4,6,7,8,9$ 的限制。
数据范围
对于所有数据,保证 $1\le n,a,b\le 2\times 10^4$,$a\neq b$。
子任务编号 | 子任务分值 | $n\leq$ | 特殊性质 |
---|---|---|---|
$1$ | $5$ | $7$ | $a,b\le n$ |
$2$ | $10$ | $100$ | 无 |
$3$ | $10$ | $5\times 10^3$ | 无 |
$4$ | $15$ | $10^4$ | 无 |
$5$ | $15$ | $1.3 \times 10^4$ | 无 |
$6$ | $10$ | $1.6 \times 10^4$ | 无 |
$7$ | $15$ | $2\times 10^4$ | $a,b\ge n-10$ |
$8$ | $10$ | $2\times 10^4$ | $a,b\ge n-2000$ |
$9$ | $10$ | $2\times 10^4$ | 无 |
时间限制:$\texttt{5s}$
空间限制:$\texttt{1GB}$
提示
如果你引用了多项式操作,你可以通过自定义测试来测试你的程序的速度。
后记
由于你不会做这道题,你通过了人机验证。