P8931 [入门赛 #10] Hack Problem P

题目背景

这是一道 **hack 题**。在此类型的题目中,你将得到若干个问题和若干个解决对应问题的代码,但是给出的代码不能对于某些输入给出正确的输出。不能给出正确的输出的情况包括: 1. 输出错误的结果。 2. 运行超时。 3. 产生一些运行时未定义行为。目前技术可检测的未定义行为仅包括数组越界。 对于每个问题,你需要提交一份符合要求的输入数据,使得给定的代码不能给出正确的输出。你可以直接使用『提交答案』功能,也可以提交一份以任何语言写成的数据生成器。 --- **提示:如果你使用提交答案功能,请在提交其他题目时记得将语言改回你所使用的语言**

题目描述

以下给出三个问题的题目描述: #### 问题 1 给出两个正整数 $x, y$,保证它们的最小公倍数($\mathrm{lcm}$)不大于 $10^9$。求它们的最小公倍数。 #### 问题 2 **多组数据**,给定一个长度为 $n$ 的数组 $[a_1, a_2, \dots a_n]$,保证数组单调递增。有 $q$ 次询问,每次给出一个整数 $x$,求数组中有多少数小于等于 $x$。 #### 问题 3 **多组数据**,给定一个长度为 $n$ 的数组 $[a_1, a_2, \dots a_n]$,有 $q$ 次询问,每次给出一个整数 $x$,求数组中有多少数小于等于 $x$。 注:问题 $2$ 和问题 $3$ 除了在是否保证数组递增上有差异外,在数据范围上也有区别,见下。

输入格式

#### 问题 1 输入只有一行两个整数,依次表示 $x$ 和 $y$。 #### 问题 2 第一行是一个整数 $T$,表示测试数据组数。 接下来按顺序给出每组数据的输入。 每组数据第一行是两个整数,依次表示数组 $a$ 的长度 $n$ 和询问次数 $q$。 每组数据第二行有 $n$ 个整数,依次表示 $a_1, a_2, \dots a_n$。 每组数据第三行有 $q$ 个整数,依次表示 $q$ 次询问给出的 $x$。 #### 问题 3 第一行是一个整数 $T$,表示测试数据组数。 接下来按顺序给出每组数据的输入。 每组数据第一行是两个整数,依次表示数组 $a$ 的长度 $n$ 和询问次数 $q$。 每组数据第二行有 $n$ 个整数,依次表示 $a_1, a_2, \dots a_n$。 每组数据第三行有 $q$ 个整数,依次表示 $q$ 次询问给出的 $x$。

输出格式

#### 问题 1 输出只有一行一个整数,表示两数的最小公倍数。 #### 问题 2 对每组数据,输出一行 $q$ 个整数,依次表示每次询问的答案。 #### 问题 3 对每组数据,输出一行 $q$ 个整数,依次表示每次询问的答案。

说明/提示

### 样例组与实际输入的说明 三个样例分别对应三个问题的样例输入输出。 如果你直接采用『提交答案』的方式,请分别将三个输入数据命名为 `1.in`、`2.in`、`3.in`,并打成 zip 压缩包进行提交; 如果你采用提交数据生成器的方式,你的生成器可以从标准输入读入一个整数 $x$,满足 $1 \leq x \leq 3$,表示该测试点对应的问题编号,然后**输出对应的输入数据**。 显然,你的程序不应该读入『输入格式』里提到的任何内容(而应该构造它们),也不应该输出『样例输出』里提到的任何内容(而是只输出你构造的输入数据)。你不应该使用样例测试你的程序,这只是对三个问题的样例说明。 ### 数据规模要求 你给出的数据必须满足如下要求: 1. 完全符合『输入格式』的规定,不能有多余的输入,但是可以有行末空格和文末回车。 2. 数据中所有的数字都应为整数。 3. 对于问题 1,$1 \leq x, y \leq 10^9$,且你**必须保证**两数的最小公倍数也不超过 $10^9$。 4. 对于问题 2,$1 \leq T \leq 3$,$1 \leq n,q \leq 10^5$,$1 \leq a_i, x \leq 10^9$。 5. 对于问题 3,$1 \leq T \leq 3$,$1 \leq n, q, a_i, x \leq 10^6$。 ### 目标代码 你需要 hack 如下的代码: #### 问题 1 ```cpp #include #include int main() { int x, y; std::cin >> x >> y; int ans = x * y / std::__gcd(x, y); std::cout 1; if (a[mid] > T; T; --T) { std::cin >> n >> q; for (int i = 1; i > a[i]; } for (int x; q; --q) { std::cin >> x; std::cout > n >> q; for (int i = 1; i > a[i]; } for (int i = 1; i > x; std::cout taskId; if (taskId == 1) { cout