P12417 基础构造练习题 1

题目背景

2025.5.6:加强操作次数限制,并调整了部分分设计。 2025.5.8:再次加强操作次数限制,并调整了部分分设计。之前的提交记录已经全部重测。

题目描述

有一列实数,对于**每一次**操作,可以选择两个实数,把它们同时变为两数之积。 例如,给定 $7, 4, 5$,对 $7$ 和 $5$ 进行一次操作,原数列变为 $35, 4, 35$。 给定数列的长度 $n$,你的目标是找到一种操作方案,使得对于任意长度为 $n$ 的实数列,按照该操作方式操作之后,数列的每一项数值都相同。

输入格式

**本题有多组测试数据。** 第一行输入数据组数 $T$。 对于每组数据有一行,包含一个正整数 $n$,表示数列长度。

输出格式

对于每组数据,先输出一个整数表示能否找到。若能输出 $1$,否则输出 $0$。 若能找到,还需要输出一行 $m$ 表示操作次数(你需要保证 $0 \leq m \leq 5 \times 10^5$),接下来 $m$ 行,每行包含两个整数,表示操作的两项在数列中的编号。

说明/提示

Idea:Milmon,Solution:Milmon & _fewq,Code:Milmon & _fewq,Data:Milmon,Check:Konata28。 对于所有测试数据,保证 $T = 20$,$2 \leq n \leq 2^{10}$。本题共包含 $3$ 个子任务: | 子任务编号 | 分值 | 测试点数目 | | :-: | :-: | :-: | | $1$ | $10$ | $1$ | | $2$ | $30$ | $1$ | | $3$ | $60$ | $3$ | 对于子任务 1,选手只需要正确回答是否存在操作方案即可获得满分。 对于子任务 2,对于每组测试数据分别计分:对于一组测试数据,只要选手正确回答是否存在操作方案,并且给出的操作方案均合法,就可以得到该测试点 $5 \%$ 的分数。选手在该测试点得到的分数等于每组测试数据得分的总和。 对于子任务 3: - 若存在一组测试数据,选手没有正确回答是否存在操作方案,或者给出的操作方案不合法,那么选手在该测试点不得分; - 否则,若对于所有存在操作方案的测试数据,选手都给出了操作次数不超过 $2n - 1$ 的方案,那么选手在该测试点得到全部分数; - 否则,设所有存在操作方案的测试数据中选手给出的最大操作次数为 $s$,定义函数: $$ f(x) = \frac{2 \times 10^7}{(x + 4\,000)^{0.7}} $$ 则选手在该测试点的得分为: $$ \frac{f(s) - f(500\,000)}{f(2\,047) - f(500\,000)} \times 55 $$ 下表为在一些特殊的 $s$ 中选手在该测试点得到的分数: | $s =$ | 选手得分 | | :-: | :-: | | $500\,000$ | $0$ | | $400\,000$ | $0.436$ | | $300\,000$ | $1.106$ | | $200\,000$ | $2.302$ | | $100\,000$ | $5.258$ | | $50\,000$ | $9.836$ | | $10\,000$ | $29.402$ | | $5\,000$ | $41.003$ | | $3\,000$ | $49.391$ | | $2\,047$ | $55$ | 提示:若能够完成正确性判断,但是无法完成构造的,也需要按照输出格式输出,例如你可以输出一个 $m = 0$ 的构造。类似地,输出时请判定 $0 \leq m \leq 5 \times 10^5$ 是否成立,若评分时存在一组数据的 $m > 5 \times 10^5$,则你无法得到任何分数。