P10364 [PA 2024] Dzielniki
题目背景
PA 2024 5B1
题目描述
**题目译自 [PA 2024](https://sio2.mimuw.edu.pl/c/pa-2024-1/dashboard/) Runda 5 [Dzielniki](https://sio2.mimuw.edu.pl/c/pa-2024-1/p/dzi/)**
我们从区间 $[1,n]$ 中选取了一个整数 $x$,你的任务是猜这些数。你不必盲目地猜,可以问一些问题。每个问题你可以询问区间 $[0,c]$ 中的某个整数 $y$,我们会告诉你 $x+y$ 的因子个数。
为了让题目稍微困难一些,你需要在一次运行中解决 $t$ 个用例。询问总数被限制在 $q$ 次。
输入格式
在程序的开头你**不应该**使用 `#include "dzilib.h"` 引入交互库。
你需要实现如下函数来完成本题。
- `void Solve()`:程序只会调用此函数一次,在这个函数中,你需要实现猜测 $t$ 个用例的所有程序逻辑。
你可以调用如下函数。
- `int GetT()`:返回 $t$ 的值。
- `long long GetN()`:返回 $n$ 的值。
- `int GetQ()`:返回 $q$ 的值。
- `long long GetC()`:返回 $c$ 的值。
- `int Ask(long long y)`:返回要猜的数 $x$ 与 $y$ 的和的因子个数。你需要保证 $0\le y\le c$。
- `void Answer(long long x)`:做出一次回答。此函数无返回值。
如果你调用 `Ask()` 函数的总次数超过 $q$,则你的程序会被判为 `Wrong Answer`。如果存在一次调用 `Answer()` 函数,你猜测的数与答案不同,你的程序也会被判为 `Wrong Answer`。
输出格式
无
说明/提示
#### 数据范围
| 子任务编号 | $t$ | $n$ | $q$ | $c$ |
|:-:|:-:|:-:|:-:|:-:|
| $1$ | $50$ | $10^5$ | $50000$ | $10^{12}$ |
| $2$ | $50$ | $10^6$ | $5000$ | $10^{12}$ |
| $3$ | $10$ | $10^9$ | $50000$ | $10^{12}$ |
| $4$ | $10$ | $10^{14}$ | $5000$ | $10^{17}$ |
| $5$ | $10$ | $10^{14}$ | $2000$ | $10^{17}$ |
| $6$ | $10$ | $10^{14}$ | $1300$ | $10^{17}$ |
| $7$ | $10$ | $10^{14}$ | $950$ | $10^{17}$ |
| $8$ | $10$ | $10^{14}$ | $820$ | $10^{17}$ |
| $9$ | $10$ | $10^{14}$ | $750$ | $10^{17}$ |
| $10$ | $10$ | $10^{14}$ | $720$ | $10^{17}$ |