UOJ Logo Universal Online Judge

UOJ

统计

现在蒜头有 $N$ 个盒子,第 $i$ 个盒子里面有 $p_i$ 个球,蒜头从一个盒子中只能拿一个球出来,他想要知道恰好拿出来 $M$ 个球的方案数,对 $998244353$ 取模。但是他自己却不知道怎么做,所以他现在来求助于你。

但是蒜头不想让其他人知道它具体有多少球,所以他不会告诉你 $p_i$ 的具体的值,而需要你来指导他怎样计算。具体来说,蒜头有一个长度为 $T$ 的整型数组 $A$,其中前 $N$ 个位置初始存的是 $p_1,p_2,\cdots,p_N$ ,其余位置的初始值由你来决定。在决定完初始值之后,你就只能指导他进行计算了,即只能提出 $A_i=A_j+A_k$,$A_i=A_j-A_k$,$A_i=A_j*A_k$ (所有运算均在模 $p$ 意义下)这三种计算。并且在指导过程中蒜头不允许你修改前 $N$ 个位置的值。在完成指导后,你还需要指出 $A$ 中的哪一个数是答案。

任务

你需要编写两个函数,以完成题目的任务:

  • Init(N,M,T);
    • $N,M,T$ 的含义如题面所述。
    • 在这个函数中你需要给出数组 $A$ 中其余位置的初始值,如果不给定则会是随机数值。
  • solve();
    • 在这个函数中你需要制定蒜头进行计算,并指出哪一个数是答案。

在Init(N,M,T)中,你可以也只能调用交互库的如下函数:

  • Set(i,x);
    • 表示将 $A_i$ 的初始值设为 $x$ ,可以对于同一 $i$ 重复调用,但需要满足 $N < i \leq T$。

在solve()中,你可以也只能调用交互库的如下函数:

  • Plus(i,j,k);
    • 表示指导大蒜进行一次 $A_i=A_j+A_k$ 的计算,需要满足 $N < i \leq T, 1 \leq j,k \leq T$。
  • Minus(i,j,k);
    • 表示指导大蒜进行一次 $A_i=A_j-A_k$ 的计算,需要满足 $N < i \leq T, 1 \leq j,k \leq T$。
  • Multiply(i,j,k);
    • 表示指导大蒜进行一次 $A_i=A_j*A_k$ 的计算,需要满足 $N < i \leq T, 1 \leq j,k \leq T$。
  • Answer(i);
    • 表示告诉打算答案存在 $A_i$ 中,需要满足 $1 \leq i \leq T$。
    • 注意在执行完这一函数后程序将直接结束。

实现细节

本题只支持 C++。

你只能提交一个源文件实现上述的 Init 和 Solve 函数,并且遵循下面的命名和接口。你需要包含头文件 polynomail.h。

void Init(int N,int M,int T);
void Solve();

函数 Set, Plus, Minus, Multiply, Answer 的接口信息如下。

void Set(int i,int x);
void Plus(int i,int j,int k);
void Minus(int i,int j,int k);
void Multiply(int i,int j,int k);
void Answer(int i);

评测方式

评测系统将读入如下格式的输入数据:

第一行三个整数 $N,M,T$。

第二行 $N$ 个整数 $p_i$。

评测系统将输出如下格式的输出数据:

第一行一个整数 $ans$,表示你所指出的位置上的值。

限制与约定

Subtask1(5分):$1 \leq N \leq 1000, 0 \leq M \leq N, T=10000$;

Subtask2(15分):$1 \leq N \leq 1000, 0 \leq M \leq N, T=2048$;

Subtask3(20分):$1 \leq N \leq 1000, 0 \leq M \leq N, T=1100$;

Subtask4(10分):$1 \leq N \leq 1000, 0 \leq M \leq N, T=1050$;

Subtask5(10分):$1 \leq N \leq 1000, 0 \leq M \leq N, T=1020$;

Subtask6(10分):$1 \leq N \leq 1000, 0 \leq M \leq N, T=1012$;

Subtask7(10分):$1 \leq N \leq 1000, 0 \leq M \leq N, T=1008$;

Subtask8(10分):$1 \leq N \leq 1000, 0 \leq M \leq N, T=1006$;

Subtask9(10分):$1 \leq N \leq 1000, 0 \leq M \leq N, T=1005$;

时间限制:1s

空间限制:512MB

下载

输入数据下载