P5780 [CTSC2011] 排列

题目描述

沫沫很喜欢找规律填数字,譬如 $1,4,7,( ),\cdots$,相邻的数相差为 $3$,括号中的数应为 $10$;又如 $3,6,12,( ),\cdots$,每个数是前一个数的两倍,括号中的数应为 $24$。 由于常年玩这种游戏,沫沫厌倦了等差数列与等比数列。当看到数列 $1,2,\cdots,n$ 时,她想尽量小的改变其顺序使得不存在公差为 $A$ 或者公比为 $B$ 的子列。 具体地,给定整数 $n,A,B$,求一个 $1$ 到 $n$ 的排列 $P = (P_1,P_2,\cdots,P_n)$,满足 $\forall i,j \in \{1,2,\cdots,n \}$,若 $i

输入格式

第一行包含三个正整数 $n,A,B$,意义如前所述。相邻的数之间用一个空格隔开。

输出格式

第一行包含 $n$ 个整数,为你求得的排列 $P$,相邻的数之间用空格隔开。

说明/提示

**样例说明** 该排列对应的 $S = 3$,是 $n=4,A=3,B=2$ 时能取到的最大的 $S$。 ------ **评分方式** 每个测试点单独评分。 对于每一个测试点,如果你的输出不合法,如文件格式错误、输出的解不符合要求等,该测试点得 $0$ 分。 否则设你输出的排列对应 $S$ 值为 $a$,我们提供的排列对应 $S$ 值为 $b$,你在该测试点的得分如下: - 如果 $a \le b$,得 $10$ 分; - 否则得分为: $\max \{ [10 \times ( \exp (\frac{a}{b}-2)],1 \}$ ------ **数据规模** 总共 $10$ 个测试点,数据范围满足: | 测试点编号 | $n$ | $A$ | $B$ | | :--------: | :------: | :---------------: | :-----: | | $1$ | $\le 30$ | $\le n$ | $\le n$ | | $2$ | $\le 60$ | $A\bmod B\not =0$ | $\ge 4$ | | $3$ | $\le 70$ | $A\bmod B\not =0$ | $\ge 5$ | | $4$ | $\le 80$ | $A\bmod B\not =0$ | $\ge 6$ | | $5$ | $\le 90$ | $A\bmod B\not =0$ | $\ge 7$ | | $6$ | $\le 90$ | $\le n$ | $=1$ | | $7,8$ | $\le 90$ | $\le 5$ | $\le n$ | | $9$ | $=60$ | $=21$ | $=3$ | | $10$ | $=90$ | $=18$ | $=2$ | 在所有输入数据中,$A$ 与 $B$ 均为不超过 $n$ 的正整数。