AT_utpc2024_f Fourier Coefficients
题目描述
本题为**交互题**(你的程序与评测程序通过标准输入输出进行交互)。评测程序的运行最多需要 $1.3$ 秒。
给定一个整数 $N$。评测程序隐藏了一个函数 $f(x) \coloneqq \sum_{k=0}^{N-1} A_k \cos{kx}$,其中,$A_0, \dots, A_{N - 1}$ 是 $0$ 以上、$998244353$ 未满的整数。
通过下面的交互过程,确定整数 $A_0, \dots, A_{N-1}$:
- 你需要输出 $N$ 组整数对 $(X_1, Y_1), \dots, (X_N, Y_N)$。对于每组整数 $(X_i, Y_i)$,需要满足 $0 \le X_i \le Y_i < 998244353$ 且 $Y_i \neq 0$。
- 评测程序会回复 $N$ 个整数 $Z_1, \dots, Z_N$。每个 $Z_i$ 按如下定义:$Z_i \coloneqq f(\arccos(X_i / Y_i)) \bmod 998244353$。
关于 $Z_i$ 的严格定义:在 $X_i, Y_i$ 的限制下,$f(\arccos(X_i / Y_i))$ 是一个有理数,特别地,若用最简分数 $P_i / Q_i$ 表示,且 $Q_i \not\equiv 0 \pmod{998244353}$,则 $Z_i$ 是满足 $Z_i Q_i \equiv P_i \pmod{998244353}$ 的 $[0, 998244353)$ 内的唯一整数。可以证明,这样的 $Z_i$ 必然存在且唯一。
输入格式
本题为交互题(你的程序与评测程序通过标准输入输出进行交互)。
首先,从标准输入读取 $N$。
> $N$
接下来,你需要输出满足条件的 $(X_1, Y_1), \dots, (X_N, Y_N)$,每两个数字之间以空格分隔,所有数值按 $X_1~Y_1~X_2~Y_2~\cdots~X_N~Y_N$ 的顺序输出,最后换行并刷新缓冲区。
> $X_1$ $Y_1$ $X_2$ $Y_2$ $\cdots$ $X_N$ $Y_N$
如输出合法,评测机会回复 $N$ 个整数 $Z_1, \dots, Z_N$,每个数字之间以空格分隔,表示 $f(\arccos(X_i / Y_i))$ 模 $998244353$ 的值。
> $Z_1~Z_2~\cdots~Z_N$
如输出不合法,则输入会返回一行 `-1`。
```
-1
```
如果收到 `-1`,请立即退出程序。
之后,请输出你的答案,格式如下:
> $A_0~A_1~\cdots~A_{N-1}$
输出格式
参考上述交互流程。
说明/提示
## 注意事项
- **每次输出后务必换行并刷新缓冲区。否则可能会因评测超时(TLE)而失败。**
- 如果交互过程中输出非法内容,或者程序中途退出,则评测结果不确定。
- 输出答案后(或接收到 `-1` 后)请立刻正常退出程序,否则评测结果不确定。
- 尤其需要注意,如果输出多余的换行,也会被判为格式错误。
- 评测程序不会根据你的查询自适应变化。也就是说,$A_0, \dots, A_{N - 1}$ 在交互开始就已经固定,期间不会改变。
## 输入输出样例
以下为 $N = 2$、$(A_0, A_1) = (3, 2)$ 的示例:
输入 输出 说明
`2` 给出 $N$
`0 1`
`1 1` 向评测程序查询符合条件的 $(X_i, Y_i)$
`3`
`5` 得到 $f(\arccos(X_i / Y_i))$ 的结果回复
`3`
`2` 输出结果 $(A_0, A_1) = (3, 2)$
# 输入格式
详见题面交互过程。
# 输出格式
详见题面交互过程。
# 提示
- 输入均为整数。
- $1 \leq N \leq 5 \times 10^{5}$。
由 ChatGPT 5 翻译